我目前使用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
參考