gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:39:42 25 4
gpt4 key购买 nike

有没有办法从我的 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 套接字脚本绑定(bind)到 0.0.0.0 端口 25,但是来自容器内部的 telnet 将不起作用。我还尝试将套接字绑定(bind)到 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 接口(interface)上找到主机 IP。 .在您的情况下,它是 172.17.0.1你应该使用它从容器连接。

关于docker - 从 docker 容器连接到主机上的 docker0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com