Docker-compose中的网络模式容器

3

使用普通的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

你解决了吗? - jim smith
是的和不是的。我们没有使用真正的docker-compose。在原始二进制文件周围有一个包装器,它不支持所需的network_mode。 - BlackEye
2个回答

1

我有一个版本为'2.1'的docker-compose文件,但我仍然能够执行以下操作:

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

这将使我所有的container-b流量通过container-a传输。

0

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

注意

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

不能将 network_mode: "host" 与链接混合使用。

如果您的 docker-compose “wrapper”在内部使用 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接