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确实在在排除范围内
解决方法如下 :
- 最简单的办法就是修改目前需要使用的端口,避开
Hyper-V
保留端口范围
如果不修改使用端口,就需要修改保留端口,修改方法如下:
-
最简单的办法-重启电脑:保留的端口是随机的,每次重启电脑都会改变,因此可以通过重启电脑来解决。
-
重新设置一下【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/