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

我有一个CentOS服务器,在同一个网卡上有两个静态IP地址(192.168.3.100和192.168.3.101),两个在它上面运行的端口映射如下。 容器使用泊坞窗的相同的默认'桥'networking

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通它。

我在这里错过了什么? 我想尽量避免使用192dockernetworking,因为我不想用一台机器捆绑地址空间。 使用docker 1.12.6

输出为iptables拒绝规则iptables -S | grep -i reject 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 

感谢您的input

如果你能够ping通并且不能curl,并且你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服务并再次运行容器