Windows docker容器无法ping主机

时间:2017-03-28 16:07:17

标签: windows networking docker containers

我在Windows Server 2016主机上运行Windows docker容器,运行默认配置。

使用以下命令运行docker容器时:

docker run -it microsoft/windowsservercore powershell

当我运行命令时:

ping <hostIPAddress>

它只是说请求超时。 我已经检查过我可以ping 8.8.8.8和google.com等...甚至是同一子网上的其他机器。我唯一不能ping的是主持人。

我已将'--dns'添加到'docker run'命令,但这只允许我通过主机名而不是IP来ping主机。

还有其他人看过这个问题并有解决方案吗?

4 个答案:

答案 0 :(得分:0)

我找到了解决方法(我不愿意称之为解决方案):

Windows Container Network Drivers:创建一个透明的&#39;网络:

docker network create -d transparent trans

将容器附加到此网络

docker run --network=trans ...

重要:请注意,通过此网络,您的容器需要从主机子网获取IP地址,并直接暴露给它。

可能是相关的(这是关于从主机访问容器):

根据https://github.com/Microsoft/Virtualization-Documentation/issues/253#issuecomment-217975932(JMesser81):

  

这是我们的Windows NAT实现(WinNAT)中的一个已知限制,您无法直接从容器(NAT)主机访问静态端口映射中的外部端口。

答案 1 :(得分:0)

我面临同样的问题。

我的解决方法是重启docker服务,之后它运行正常。我还在寻找永久的解决方案。

root@a6c40eb25cbf:/# ping xxx.xx.xx.xxx
PING xxx.xx.xx.xxx (xxx.xx.xx.xxx): 56 data bytes
64 bytes from xxx.xx.xx.xxx: icmp_seq=0 ttl=37 time=3.541 ms
64 bytes from xxx.xx.xx.xxx: icmp_seq=1 ttl=37 time=2.643 ms
64 bytes from xxx.xx.xx.xxx: icmp_seq=2 ttl=37 time=1.857 ms
^C--- xxx.xx.xx.xxx ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss

答案 2 :(得分:0)

就我而言,我的Windows主机上运行有一个公司管理的McAfee防火墙。我无法在防火墙上添加任何其他规则,但是幸运的是,有一条规则允许从172.16.0.0/24访问。

我使用了“ docker network create -d transparent trans”,并且按说明工作,但是我对分配给容器的主机网络中的IP感到不满意。

我做了以下事情:

  • docker network create --driver = nat --subnet = 172.16.0.0 / 24 br0
  • 在我的docker run命令中添加了--network = br0

答案 3 :(得分:0)

希望这可能对某人有帮助。

在Windows 10上,当在0.0.0.0:5057上托管Linux容器时,我可以使用“控制面板”>“所有控制”中找到的vEthernet(默认交换机)NIC的IP地址从Windows主机(PowerShell)ping服务器。面板项目>网络连接:

Win10 host IP of Linux Container