【问题标题】:Network mode container in docker-composedocker-compose 中的网络模式容器
【发布时间】:2022-05-07 22:20:42
【问题描述】:

使用普通 docker,我可以像这样使用网络模式容器:

docker run -d --name container-b --network container:container-a <image>

这可以使用 docker-compose 实现吗?

services:
  service-b:
    container_name: container-b
    network_mode: "container:container-a"

导致:

ERROR: Please provide 'network_mode: "bridge"' or 'network_mode: "host"' in your docker-compose.yaml

【问题讨论】:

  • 你解决了吗?
  • 是和不是。我们没有使用真正的 docker-compose。原始二进制文件的包装器不支持所需的 network_mode。

标签: docker docker-compose docker-networking


【解决方案1】:

来自https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode

注意

在 swarm 模式下部署堆栈时忽略此选项。

network_mode:“host”不能与链接混合。

如果您的 docker-compose“包装器”在后台使用 docker stack deploy,它将无法工作。

你必须使用这样的东西:

docker network create some-other-network -d bridge --attachable --scope swarm

...some-other-network 绑定到目标容器。

然后:

version: "3.9"

services:
  my-service:
    image: ...
    networks:
      - some-other-network
    
...

networks:
  some-other-network:
    external: true

【讨论】:

    【解决方案2】:

    我有一个版本为“2.1”的 docker-compose 文件,但我可以这样做:

    services:
      service-b:
        container_name: container-b
        network_mode: service:container-a
    

    这使我所有的container-b 流量都流经container-a

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多