如何从独立容器连接到 Docker Compose 容器

top*_*eve 4 docker docker-compose

我正在使用 Docker Compose 文件来启动 Fluentd 的一个版本,如下所示:

version: '3'
services:

  fluentd:
    image: "fluent/fluentd:latest"
    ports:
      - "9880:9880"
      - "24224:24224"
    volumes:
      - ./config:/fluentd/etc
      - ./data/fluentd/logs:/fluentd/logs
    environment:
      - FLUENTD_CONF=fluentd.conf
Run Code Online (Sandbox Code Playgroud)

这将启动一个名为 project_default 的网络,然后启动 Fluentd。

然后,我想从包含我当前正在开发的应用程序的普通 Docker 容器连接到该 fluidd 实例。据我从文档中可以看出,我应该能够运行容器并使用以下命令连接到 fluidd 实例:

docker run --network=project_default -e FLUENTHOST='fluentd' myapp:1.0.0
Run Code Online (Sandbox Code Playgroud)

其中 FLUENTHOST 环境变量传递 Fluentd 应运行的主机名。

当我运行此命令时,我收到一条“查找'fluidd':没有这样的主机”错误消息。

我的 Docker Compose 文件或 docker run 命令中是否缺少某个步骤?

Roh*_*ite 5

在 docker-compose 文件中,您需要指定自定义网络驱动程序桥。

networks:
    your_network_name:
      driver: bridge
Run Code Online (Sandbox Code Playgroud)

然后使用 --network="your_network_name"标志运行另一个容器

我有类似的方法,但我通过不同的 docker-compose 文件运行两个容器,看看。

docker-compose 文件在自定义网络名称 code-network 上运行容器 1

version: '2'
services:

 container_1:
  build: container_1
  networks:
   - code-network

networks:
 code-network:
  driver: bridge
Run Code Online (Sandbox Code Playgroud)

docker-compose 文件来运行容器 2 以在现有网络 code-network 上运行

version: '2'
services:

 container_2:
  build: "container_2"   
  networks:
    - code-network

networks:
  code-network:
   external: true
Run Code Online (Sandbox Code Playgroud)

如上所述,容器 1 和容器 2 都在同一网络上运行,希望这对您有帮助:)