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

时间:2020-04-02 18:28:50

标签: docker docker-compose docker-networking docker-network

我有2张图片,我想通过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_mode结合使用networks

这不起作用:

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

1 个答案:

答案 0 :(得分:0)

如果它们都在您的主机网络上,则它们可以相互通信,就像普通应用程序彼此通信一样:通过localhost。因此,您根本不需要桥接。