无法到达端口映射的IP地址上的另一个docker容器

时间:2017-08-17 16:53:10

标签: docker networking

我有一个CentOS服务器,在同一个网卡上有两个静态IP地址(192.168.3.100和192.168.3.101),并在其上运行两个容器,端口映射如下所示。容器使用与docker相同的默认“桥接”网络

192.168.3.100:80->80/tcp container1

192.168.3.101:80->80/tcp container2

从主机,我可以执行curl 192.168.3.100curl 192.168.3.101并且正常工作。从主机/容器我可以执行curl 172.17.0.2curl 172.17.0.3并且工作正常。

但我无法从这些容器中执行curl 192.168.3.100curl 192.168.3.101。结束时出现错误No route to host。我可以ping它。

我在这里缺少什么?我想尽量避免使用192 docker网络,因为我不想用一台机器占用地址空间。使用docker 1.12.6

iptables的输出拒绝规则iptables -S | grep -i reject

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

感谢您的输入

1 个答案:

答案 0 :(得分:0)

如果你能够ping并且不能卷曲并且你得到no route to host那么它主要意味着你的数据包被防火墙拒绝了。

使用sudo iptables -Ssudo iptables -L -n检查iptables。如果您看到使用icmp规则的REJECT或REJECT而不是问题。

如果你不担心iptables而且可以清除它。停止docker服务并运行下面的

$ iptables -F
$ iptables -X
$ iptables -t nat -F
$ iptables -t nat -X
$ iptables -t mangle -F
$ iptables -t mangle -X

这将清除所有表格。然后启动docker服务并再次运行容器