簡體   English   中英

Docker - Windows 容器無法解析主機

[英]Docker - Windows Container Not Resolving Hosts

我使用 Docker 工具在 Visual Studio 中設置了兩個新項目。 第一個是針對 Linux 容器運行的 asp.net 站點。 第二個是針對 Windows 容器運行的 asp.net 站點。

在前者中,我可以 ping 主機名(例如:google.com)並且它解析得很好。

從 linux 容器 ping

但是,在運行 Windows 容器時,我不能做同樣的事情。

windows 網絡詳細信息和從 windows 容器 ping

我正在運行一個自定義網絡,以便我可以確保容器在我想要的子網上啟動:

docker network create --driver=nat --subnet=192.168.221.0/24

需要明確的是,我可以使用 IP ping 得很好,但是由於我想通過主機名連接到數據庫,這在開發過程中並不是特別有用。

我只是想通了這一點。 需要在 Docker 桌面中“切換到 Windows 容器”。

1)。 關注: https : //docs.docker.com/machine/drivers/hyper-v/#example

2)。 啟動 hyper v(可能需要啟用): https : //docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

3)。 然后在 hyper v 中創建外部虛擬交換機。 選擇您的 wifi 適配器。 (應該在打開或關閉 vpn 的情況下工作)。

4)。 重啟。

5)。 我使用此圖像,因為它必須與我的本地 windows windows 10 版本匹配:1809

docker pull mcr.microsoft.com/windows:1809   #takes an hour to finish

6). 啟動容器並附加到新網絡。

docker run -dit --name win1809 mcr.microsoft.com/windows:1809 powershell
docker network ls
docker network connect "John Windows Container Switch" win1809
docker network inspect "John Windows Container Switch"

顯示:

        "Containers": {
            "b8c4ae07761fdf082602f836654013b8d83a717cce9156880a80c7542d855842": {
                "Name": "win1809",
                "EndpointID": "e84652fc93fd1fa2970c3bdcad513d8928fc35823a9f8cf0e638926b6091a60c",
                "MacAddress": "00:15:5d:fb:77:dd",
                "IPv4Address": "",
                "IPv6Address": ""

7)。 連接到容器並 ping 一些東西:

docker exec -it win1809 powershell
ping www.google.com

Pinging www.google.com [172.217.10.36] with 32 bytes of data:
Reply from 172.217.10.36: bytes=32 time=19ms TTL=118
Reply from 172.217.10.36: bytes=32 time=18ms TTL=118
Reply from 172.217.10.36: bytes=32 time=18ms TTL=118
Reply from 172.217.10.36: bytes=32 time=14ms TTL=118

暫無
暫無

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

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