[Docker]windows container虛實網路溝通無障礙

我目前使用docker for windows,前一陣子才解決Linux container和windows host網路問題

而主要的方式是透過bridge,這篇再來看看windows container虛擬網路設定。

要讓windows host和windows container可以雙向溝通,同時也要讓windows container可以對外internet,

我的方式是自行建立 transparent 網路,並設定和實體網卡相同網段,透過下面命令建立transparent 網路

note:建立成功後,應該會自動建立一個新的hyperV的virtual switch,需確認該virtual switch網路狀態OK

docker network create -d transparent --subnet=192.168.1.0/24 --gateway=192.168.1.1 MyTransparentNet
docker network ls

ps:

預設所有的windows container都會使用nat 網路,但我在nat網路下只能windows host存取windows container,

且windows container不能存取windows host,另外windows container的DNS解析完全不work(無法ping www.google.com ),

所以我才改用 transparent 網路,如有nat設定正常的朋友,麻煩交流一下。

 

啟動iis和windowsservercore並指定網路類型

docker run -it --name windowsservercore --net=MyTransparentNet microsoft/windowsservercore cmd
docker run -it --name myiis --net=MyTransparentNet microsoft/iis cmd
docker exec -it myiis cmd

目前IP自動取得如下

windows host ip:192.168.1.105(既有)

windows iis on windows container ip: 192.168.1.113(自動取得)

Windowsservercore on windows container ip: 192.168.1.112(自動取得)

現在windows host和所有windows container都是相同網段(橋接至實體網卡),

如此一來,虛實網路溝通將沒有距離。

 

存取container iis 服務在windows host

Ping windows host from windows container

Ping www.google.com from windows container

Ping other windows container from container

參考

Windows Container Networking