簡體   English   中英

Windows docker 容器無法 ping 主機

[英]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 網絡創建 --driver=nat --subnet=172.16.0.0/24 br0
  • 將 --network=br0 添加到我的 docker run 命令

我面臨同樣的問題。

我的解決方法是重新啟動 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

希望這可能對某人有所幫助。

在 Windows 10 上,當在 0.0.0.0:5057 上托管 Linux 容器時,我能夠使用控制面板>所有控制面板項目>中的 vEthernet(默認交換機)NIC 的 IP 地址從我的 Windows 主機(powershell)ping 我的服務器網絡連接:

Linux容器的Win10主機IP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM