Docker Dessktop会偶发绑定端口失败的,而端口明明没有被占用,偶尔还会频繁地出现这个问题,自己测试倒还罢了,如果用于生产环境,则是一大BUG。
这个问题我在Windows 10和11上都遇到过。
看网上有人说是由于开启了Hyper-V导致TCP动态端口范围被修改的事,使用netsh int ipv4 show dynamicport tcp
查看,发现端口范围果真是以1024开头的。
而这个端口范围是可以改的,把它改的靠后一点就行了。以管理员身份操作如下:
-
先关闭Hyper-V
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
需要重启。
-
修改端口范围
netsh int ipv4 set dynamicport tcp start=49152 num=16383 netsh int ipv4 set dynamicport udp start=49152 num=16383
-
查看结果
netsh int ipv4 show dynamicport tcp
-
开启Hyper-V
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
也需要重启。
再绑定端口的时候,使用49152前面的那些不常用的端口,比如39000~40000,基本就没问题了。