Docker & Hyper-V占用port問題
這個占用port的問題困擾我好久
Docker & Hyper-V占用port問題
在window下用docker desktop有時候遇上port被莫名佔用
用指令netstat -ano | findstr xxx
查詢xxx埠被誰佔用卻又顯示沒有
原來是因為在window下用docker需要依賴hyper-v技術, 而這個hyper-v每次都會隨機搶走一部分tcp埠,使用命令可以得知應避開的範圍:
# powershell / cmd
netsh interface ipv4 show excludedportrange protocol=tcp
如果避不開就手動叫Hyper-V讓路
-
關閉hyper-v
# powershell / cmd dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
-
配置ipv4動態埠 / 或者配置需要的埠不被佔用
# powershell / cmd 管理員許可權 # start 起始埠 num 表示可用埠數 按自己的需求來 netsh int ipv4 set dynamicport tcp start=30000 num=16383 // 叫他去用30000以後的阜 # 排除ipv4動態埠佔用 startport 起始埠 numberofports 埠數 netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1 // 或是指定端口50051為要讓路的
-
重新啟動hyper-v
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Reference
https://github.com/docker/for-win/issues/3171#issuecomment-459205576
上次修改於 2021-10-15