从docker容器连接到主机上的docker0

从docker容器连接到主机上的docker0,docker,networking,Docker,Networking,是否有方法从docker容器中访问主机上运行的服务(例如Postfix) 这是我的docker文件 version: '2' networks: customer: backend: image: backend:2.0 mem_limit: 5g restart: always networks: - customer ... 关于主机系统 > ip route show 172.17.0.0/16 dev docker0 pro

是否有方法从docker容器中访问主机上运行的服务(例如Postfix)

这是我的docker文件

version: '2'

networks:
   customer:

backend:
   image: backend:2.0
   mem_limit: 5g
   restart: always
   networks:
      - customer
   ... 
关于主机系统

> ip route show
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 
172.18.0.0/16 dev br-48c656087ada  proto kernel  scope link  src 172.18.0.1 

> docker network ls
86ec0ba25160        bridge                            bridge              local     
48c656087ada        customer_customer         bridge              local  
为了进行测试,我将python套接字脚本绑定到0.0.0.0端口25,但是容器中的telnet无法工作。我还尝试将套接字绑定到docker网桥(172.17.0.1)以及网络网桥(172.18.0.1)。同样的结果

集装箱上

> ip route show | awk '/default/ {print $3}'
172.18.0.1

> telnet 172.18.0.1 25
telnet: Unable to connect to remote host: Connection refused

在Linux上运行docker时,为了能够从容器内连接到主机,需要使用网络模式主机启动容器:

...
backend:
   image: backend:2.0
   mem_limit: 5g
   restart: always
   networks:
      - customer
   network_mode: "host"

或者,您可以使用
ifconfig
在docker0界面上找到主机IP。在您的情况下,它是
172.17.0.1
,您应该使用它从容器连接。

@sonix,您尝试过这个吗?这应该可以正常工作,但在我的情况下不行,因为我的容器中没有docker0,不知道为什么。