0%

hnsCall failed in Win32 The object already exists

windows server 2019 重開機後,自建 container nat networks 會消失。
來源 : Windows container network drivers

1
NAT networks created on Windows Server 2019 (or above) are no longer persisted after reboot.

所以我有寫一些重啟機器時檢查 network ,如果不存在就再建立一組並且啟動 docker,但時不時會碰到 Error response from daemon: hnsCall failed in Win32: The object already exists. (0x1392) 的錯誤。

但透過以下指令卻又都找不到已經存在的 network mapping

1
2
$ docker network ls
$ Get-NetNatStaticMapping

直接下指令砍掉要建立的 network 名稱,會回傳這物件不存在,但你要建立又會說這物件已經存在的鬼擋牆狀況… 這應該是 windows container bug ,之前只要碰到這個問題都直接重長機器,而剛剛終於找到解法了 (灑花)

解法

1
2
3
4
5
6
7
8
# 先停掉 docker service
$Stop-Service docker

# 停掉 hns
$Stop-Service hns

# 重啟 docker service, 這會連帶的 hns 也會被啟動
$Start-Service docker

這時候再重新跑 docker network create 就會過了,這問題卡了我很長一段時間,終於找到解法了