Windows 端口不可用排查

Created
Apr 9, 2023 02:06 AM
Tags

部署错误信息

 
C:\server\kafka>docker-compose up -d [+] Running 2/3 ✔ Network kafka_default Created 0.3s ✔ Container kafka-zookeeper-1 Started C:\server\kafka>docker-compose up -d [+] Running 2/3 ✔ Network kafka_default Created 0.3s ✔ Container kafka-zookeeper-1 Started 2.3s - Container kafka-kafka-1 Starting 1.8s Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:9092 -> 0.0.0.0:0: listen tcp 0.0.0.0:9092: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
主要的错误信息是这个:
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:9092 -> 0.0.0.0:0: listen tcp 0.0.0.0:9092: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
看样子是端口不可用。

Windows 下的保留端口

在 Windows 下有些端口是默认被保留的,不可以使用。用以下命令可以查看。
PS C:\> netsh interface ipv4 show excludedportrange protocol=tcp 协议 tcp 端口排除范围 开始端口 结束端口 ---------- -------- 1045 1144 1145 1244 1245 1344 1345 1444 1445 1544 1563 1662 9005 9104 9105 9204 9205 9304 9305 9404 9405 9504 9505 9604 50000 50059 * * - 管理的端口排除。
可以看到,9092 是被保留的。

拿回被保留的端口

系统是会保留一些端口号,不过不应该有那么多常用的端口号都被保留,原因是有一些服务强制保留了这些端口,参考这个帖子可以找到解题思路。https://superuser.com/questions/1579346/many-excludedportranges-how-to-delete-hyper-v-is-disabled
net stop winnat
再看可用的端口号:
PS C:\> netsh interface ipv4 show excludedportrange protocol=tcp 协议 tcp 端口排除范围 开始端口 结束端口 ---------- -------- 50000 50059 *
如果还是不行,用这个命令作为关键字进行搜索也能找到很多方案。

重新部署服务

如果端口号没拿回来,那就只能跳过这些端口号进行服务部署,也是可以的。
kafka: image: docker.io/bitnami/kafka:3.4 ports: - "9002:9092"
比如换成 9002。
如果端口号已经拿回来了,不用修改配置文件,理论上就能重新运行部署命令即可。

查看 Windows 上正在使用的端口

命令行方式:
netstat -ano
图形化方式:
在开始菜单搜索:`resmon` 后打开资源监视器可以查看当前机器的各种资源使用情况。如果这是一台服务器建议将这个工具钉在任务栏,非常实用。
notion image