无法从Docker容器内ping特定的子网

在创build一个容器(其实并不重要)我input容器使用:

docker exec -it <container_name> /bin/bash 

从容器中,我可以ping通google.com,以及我工作场所networking上的几乎所有服务器。 但是,由于某些原因,我无法ping通172.20。*。*。

例如,我尝试了多个IP地址的服务器,如10.0。*。*,10.50。*。*,一切正常。 从172.20开始的服务器无法访问。 从Mac主机,我可以ping所有这些服务器没有问题。 我在Linux机器和Windows机器上尝试了同样的事情,并且无法重现该问题。

我假设这是Docker通过主机路由连接的方式。 这可能与dockernetworking通常在172.18。*。*上有关。 但是,我无法弄清楚。

以下是容器内的路由表:

 $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 172.18.0.1 0.0.0.0 UG 0 0 0 eth0 172.18.0.0 * 255.255.0.0 U 0 0 0 eth0 

使用Docker CE 17.09.1-ce-mac42(21090)运行macOS High Sierra。

任何想法发生了什么?

必须有一个路由器或防火墙阻止某处。 如果你想要一个好的开始,从你的mac,做一个traceroute 172.20。 看到它正在接触这些服务器的path。 由于它是不同的networking,它必须是一个路由问题。 Docker使用它的网关172.18.0.1作为其后面的任何东西,因此也需要检查托pipe它的机器的内部防火墙。 去过那里了