我有两台云服务器 A 和 B,假设他们的内网 IP 分别为 10.11.0.3 和 10.11.0.4
我在两台服务器上面都安装了 Redis。并开通了全网访问。
现在在两台服务器上分别各启动一个 docker 容器。
使用外网 IP 的时候,一切正常。
但是一旦使用内网 IP:10.11.0.3 和 10.11.0.4 就会出现:
不仅是 Redis,甚至使用 Python 的 http.server 搭建一个服务器也是这样的效果。docker 不能通过内网地址访问宿主机上面的任何端口。但是能通过内网地址与其他服务器上面的网络服务正常通信。
1
xiaoxinshiwo 2018-11-01 13:46:45 +08:00 1
网络模式没设置吧?默认是 bridge 这种模式容器和宿主数隔离的
楼主可以设置 host 模式;通过命令--network=host 指定,使用 host 模式的容器可以直接使用 docker host 的 IP 地址与外界通信,容器内部的服务端口也可以使用宿主机的端口 |
2
itskingname OP @xiaoxinshiwo 对的,解决方式没问题,确实设置--network=host 可以解决问题。我的疑惑是,为什么它能够通过内网 IP,访问宿主机所在的局域网里面的其他服务器?既然隔离了,它是如何识别宿主机的局域网的?
|
3
xiaoxinshiwo 2018-11-01 17:18:37 +08:00
@itskingname #2 建议你看看 docker 的网络模式
|
4
kkxxxxxxx 2018-11-01 17:26:38 +08:00
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload |
5
itskingname OP @kkxxxxxxx 不是防火墙的问题。
|
6
cy97cool 2018-11-01 23:37:14 +08:00
iptables -t nat -L
看看是不是有一条 drop 的规则 |