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

有没有办法从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 

为了testing,我将一个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时,为了能够从容器内连接到主机,需要使用networking模式主机启动容器:

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

或者,您可以使用ifconfig在docker0接口上find主机IP。 在你的情况下,它是172.17.0.1 ,你应该使用它来从容器连接。