我有一个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.100
或curl 192.168.3.101
并且正常工作。从主机/容器我可以执行curl 172.17.0.2
或curl 172.17.0.3
并且工作正常。
但我无法从这些容器中执行curl 192.168.3.100
或curl 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
感谢您的输入
答案 0 :(得分:0)
如果你能够ping并且不能卷曲并且你得到no route to host
那么它主要意味着你的数据包被防火墙拒绝了。
使用sudo iptables -S
或sudo 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服务并再次运行容器