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
精彩内容
发表评论