Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

Windows平台运行 docker 报如下错误:

ERROR: for zookeeper  Cannot start service zookeeper: Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
ERROR: Encountered errors while bringing up the project.

提示:端口拒绝访问(本文示例端口是2181)

查看对应的端口号 2181 是否被占用,netstat -aon|findstr 2181
如果被占用,运行命令 taskkill /pid 8001 -t -f 结束进程,则问题解决

明显端口未被占用,则需要查看端口号是否在 Hyper-V 保留 tcp 端口范围内,开始到结束范围内的端口不可用, netsh interface ipv4 show excludedportrange protocol=tcp,结果可以看到 2181确实在在排除范围内

解决方法如下 :

  1. 最简单的办法就是修改目前需要使用的端口,避开 Hyper-V 保留端口范围

如果不修改使用端口,就需要修改保留端口,修改方法如下:

  1. 最简单的办法-重启电脑:保留的端口是随机的,每次重启电脑都会改变,因此可以通过重启电脑来解决。

  2. 重新设置一下【TCP 动态端口范围】,让 Hyper-V 只在设定的范围内保留端口即可:(管理员权限)

netsh int ipv4 set dynamic tcp start=49152 num=16384

netsh int ipv6 set dynamic tcp start=49152 num=16384

先执行以上两个命令,然后重启电脑。

重启后运行命令 netsh int ipv4 show dynamicport tcp 查看 TCP 动态端口范围

或者运行命令 netsh interface ipv4 show excludedportrange protocol=tcp 查看 TCP 排除范围

关于 hyper-v :https://learn.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/about/

posted @ 2023-03-17 16:58  大_大汤  阅读(328)  评论(0编辑  收藏  举报