查看一下被占端口,以8080为例
netstat -ano | findstr 8080
如果找到相应进程,查看该进程,并干掉该进程
tasklist | findstr <进程号pid>
tskill <进程号pid>
如果没找到相应进程,又开启过Hyper-V,那就算Hyper-V保留了端口不允许其他程序绑定
查看一下系统默认的端口占用范围
netsh int ipv4 show dynamicport tcp
可以看到Windows系统默认的tcp 动态端口范围应该为:1024~13977。当开启Hyper-V后,系统默认会分配给一些保留端口供Hyper-V使用;
查看协议 tcp 端口排除范围
netsh interface ipv4 show excludedportrange protocol=tcp
应该可以看到该端口在排除范围内易导致其他程序无法绑定成功而提升被占用
解决方法:
1、关闭Hyper-V(在添加/删除windows功能处,过程省略)需要重启系统生效,但之后需要用到docker-desktop经常重启就很烦的,这也是个麻烦的问题。
2、修改端口排除范围
修改为从49999开始到65535结束
netsh int ipv4setdynamicport tcp start=49999 num=15537
查看tcp动态端口范围是否修改成功
netsh int ipv4 show dynamicport tcp
管理员权限下,重启端口
netsh winsock reset
最后重启系统生效
最后的最后,查看端口排除范围是否修改成功
netsh interface ipv4 show excludedportrange protocol=tcp