一開始我以為我發現了一個 windows server 2019 (1809) 的BUG 。
docker create network -d nat mynet
用上面的指令 在docker create network driver 用 nat 的話 ,重開機後,mynet就不見惹。
2018/12 月在 github 就有人 report 這個issue , 但是一直沒修。 https://github.com/docker/for-win/issues/3076
再深入追查才發現這是微軟預設的行為… 我的老天鵝啊!!! 這不合理吧!!!
NAT networks created on Windows Server 2019 (or above) are no longer persisted after reboot.
並沒有解釋為什麼~~~ 啊啊啊!!! (請允許我內心的哀嚎) 這樣的預設設定不是自癈武功嗎??
山不轉路轉
每次重開機重建network 總行了吧!!
用下面的powershell script 用工作排程器在開機時執行
$networkName = "mylan"
$ErrorActionPreference = "silentlycontinue"
$inspectResult = & docker network inspect $networkName
$ErrorActionPreference = "continue"
#如果network 不存在就建一個新的
if($LASTEXITCODE -eq 1) {
docker network create -d nat --subnet 192.168.1.0/24 -o com.docker.network.windowsshim.networkname=Docker-$networkName $networkName
}
哀嚎加演場
後來測試,建立新的network 然後 driver 用 transparent
docker create network -d transparent mynet
一樣會不見!! 我本來己經準備在臉上寫一個慘字了。
還好做完 windows update , network driver 是 transparent 就不會在重開機之後不見了。 應該是 KB4497934 或 KB4494441 其中之一修好的。
但是我在KB的更新說明裡面找不到相關的說明,算了,反正有修就好。
沒有留言:
張貼留言