docker 启动容器报错: (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:6379: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

问题排查

检查端口是否被其它程序占用:netstat -ano | findstr 6379,如果有需要自己处理一下,关掉冲突程序或改端口 如果本地端口没有被占用,检查是否是与hyper-v保留端口冲突了 查看hyper-v启动后的保留端口范围 netsh interface ipv4 show excludedportrange protocol=tcp 协议 tcp 端口排除范围

开始端口 结束端口

---------- --------

1026 1125

1226 1325

1326 1425

1426 1525

1526 1625

2180 2279

6220 6420

...

结果显示6220~6420端口被保留,其中包括了redis的6379端口,需要修改修改hyper-v保留端口,排除6379

修改hyper-v保留端口

以管理员身份运行 powershell停止Windows NAT 驱动程序 net stop winnat使用以下命令永久排除6379作为保留端口 netsh int ipv4 add excludedportrange protocol=tcp startport=6379 numberofports=1 store=persistent 提示:关键在于store=persistent参数表示持久化信息 上面的命令可以通过修改numberofports参数保留startport开始的多个端口开启Windows NAT 驱动程序 net start winnat再次运行 netsh interface ipv4 show excludedportrange protocol=tcp 命令可以看到6379端口已被排除(带有*号标记) 管理员权限运行协议 tcp 端口排除范围

开始端口 结束端口

---------- --------

80 80

2379 2379 *

2380 2380 *

3306 3306 *

5357 5357

6379 6379 *

50000 50059 *

* - 管理的端口排除。

其他端口号被占用同理,上面我排除了mysql、redis、etcd的端口,常用的都可以加上

参考资料:

https://www.cnblogs.com/codeninja/p/14759920.htmlhttps://www.cnblogs.com/uncmd/p/16056993.html

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。