![](/img/trans.png)
[英]Docker: Mount volume on Windows host - Windows Container
[英]Windows docker container cannot ping host
我在 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 主機。
有沒有其他人看到這個問題並有解決方案?
我找到了一個解決方法(我不願意稱之為解決方案):
Windows 容器網絡驅動程序:創建一個“透明”網絡:
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) 主機訪問靜態端口映射中的外部端口。
就我而言,我的 Windows 主機上運行着企業托管的邁克菲防火牆。 我無法在防火牆上添加任何其他規則,但幸運的是有一個規則允許從 172.16.0.0/24 訪問。
我使用了“docker network create -d transparent trans”並且它按描述的那樣工作,但是我對分配給容器的主機網絡中的 IP 不滿意。
我做了以下事情:
我面臨同樣的問題。
我的解決方法是重新啟動 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.