Docker Compose同时使用主机和网桥网络



我有两个图像,我想通过compose的默认网桥网络相互交谈,但我也希望它们能够访问我的主机网络。

为了允许图像在compose的默认网桥网络中相互通信,我不需要做任何事情:

version: '3.4'
services: 
hello:
image: hello-world
world:
image: hello-world

根据上述规范,hello服务可以使用DNS名称world引用world服务

如果我希望hello服务能够与主机的网络交互,我可以将network_mode: host添加到规范中

version: '3.4'
services: 
hello:
image: hello-world
network_mode: host
world:
image: hello-world

这允许hello服务访问主机的网络,但不能再通过compose的内置DNS访问world。我怎样才能同时做到这两点?

我已经尝试创建一个自定义网络,但自定义网络不能使用主机驱动程序,也不能将network_modenetworks:结合使用

这不起作用:

version: '3.4'
services: 
hello:
image: hello-world
network_mode: host
networks:
- bridge
world:
image: hello-world
networks:
- bridge
networks:
test:
driver: bridge
$ docker-compose up
ERROR: 'network_mode' and 'networks' cannot be combined

如果它们都在您的主机网络上,它们可以像普通应用程序一样相互通信:通过localhost。所以你根本不需要那座桥。