有没有办法从我的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
答案 0 :(得分:0)
在Linux上运行docker时,为了能够从容器内连接到主机,您需要使用网络模式主机启动容器:
...
backend:
image: backend:2.0
mem_limit: 5g
restart: always
networks:
- customer
network_mode: "host"
或者,您可以使用ifconfig
在docker0接口上找到主机IP。在您的情况下,它是172.17.0.1
,您应该使用它来从容器连接。