我在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主机。
还有其他人看过这个问题并有解决方案吗?
答案 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感到不满意。
我做了以下事情:
答案 3 :(得分:0)