如何自訂Windows Container NAT網路IPAM-Subnet設定
在前一篇解決 Symantec Endpoint Protection 與 Docker 相容性問題碰到一個問題,Docker for Windows 預設 NAT 網路無法重設,主要是想統一開發人員的 NAT 網路設定,這樣 IT 單位才方便統一套用防火牆規則。
我測試以下幾種方式:
- 在 daemon.json 指定
fixed-cidr
- 使用
docker network rm nat
移除,直接顯示「daemon: nat is a pre-defined network and cannot be removed」訊息 - 採用 Github #726 步驟,但我在 Windows 10 上執行
Get-NetNat
沒有任何訊息,Get-ContainerNetwork | Remove-ContainerNetwork
更顯示沒有此指令。
基本是都行不通。最後實在沒找到辦法才請開發人員統一自訂一條 NAT 網路。
不過就在不死心的狀態下,又在我個人的 Surface Pro 上又試了一次。
媽呀,是不是眼花了!查詢一下 CIDR 的值:
172.86.32~47.x 都是合法值,立馬請同事幫忙驗證,Bing go!
設定自定 IP Range
- 切換至 Windows Container
- Settings --> Daemon --> Advanced
"fixed-cidr":"172.86.43.0/20", "experimental":true
加入這二組設定
- 重新開機,重新啟動 docker service
docker network inspect nat
確認 nat 組態
目前我的 Surface 與同事電腦都是 Windows 10 Version 1903。不理我的工作機是 Windows 10 Version 1809,心裡浮現「你戴的那副液晶體顯影眼鏡是兩年前美國過時的產品,而我這副隱形液晶體顯影眼鏡,是上個月西德最新產品,價值11萬美金。」的這畫面。
我自己推論,"fixed-cidr"
這組設定需要與 Version 1903+ 配合才能在 Docker for Windows 生效。
這是無法套用成功的 Version 1809:
C:\>ver
Microsoft Windows [版本 10.0.17134.829]
這是可以套用成功的 Version 1903:
C:\>ver
Microsoft Windows [版本 10.0.18362.239]
這目前兩台主機 Docker for Windows :
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.24)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:28:48 2019
OS/Arch: windows/amd64
Experimental: true
相同的問題在 Linux Container 要自訂 bridge 網路也是一樣方式設定,但應該就沒有作業系統版本相關。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。