Windows Docker 端口占用错误解决
错误来源
或者
或者
这些都是端口占用的问题,很多时候都是Windows会保留部分tcp端口,这些端口范围内不可用:
可以使用netsh int ipv4 show dynamicport tcp
命令查看tcp动态端口范围:
使用netsh int ipv4 show excludedportrange protocol=tcp
命令查看 tcp 端口排除范围:
解决方法
1. 直接重启
一般重启后Hyper-V的端口分配bug会消除,自然问题也会消失,但这不一定,偶尔会出现重启也解决不了的情况
2. 重新分配Hyper-V端口范围
简单地重新设置“TCP 动态端口范围”,以便 Hyper-V 只保留我们设置的范围内的端口。您可以通过以管理员权限运行以下命令将“TCP 动态端口范围”重置为 49152–65535,但如果您认为它太大,也可以将其更改为较小的范围。
请在命令行中执行下列命令设置动态端口范围:
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
然后重启电脑。
3. 不重启让Hyper-V重新随机分配端口
net stop winnat
docker start container_name
net start winnat
这命令的实质是简化版的重启电脑,让 Hyper-V 初始化一些随机端口来保留,如果它仍然没有释放你所需要的端口,你可能需要再次操作。也就是因此,该回答下面有些人回复有用,有些人回复没用,就是因为这种解决方式解决问题的概率非常的随机。
参考文献
2:解决Windows下Docker启动容器时,端口被占用错误 - bkycmd - 博客园
4:无法启动容器,提示端口无法使用,却查不到哪个进程占用?_UVE的博客-CSDN博客
如有疑问或错误,欢迎和我私信交流指正。
版权所有,未经授权,请勿转载!
Copyright © 2023 by Mr.Idleman. All rights reserved.