解决Windows下Docker启动容器时,端口被占用错误
解决Windows下Docker启动容器时,端口被占用错误
问题描述
在使用docker-compose启动mysql的时候遇到一个问题:
1 | bind: An attempt was made to access a socket in a way forbidden by its access permissions. |
然后查了一下是否存在应用占用了3306的端口:
1 | netstat -ano | findstr 3306 |
结果很尴尬,并没有。。。
百度了一下,发现是Hyper-V
会保留部分tcp端口导致我们自己无法使用这些端口, 使用如下命令查看保留的端口:
1 | netsh interface ipv4 show excludedportrange protocol=tcp |
解决方案
解决方案很多,但是最推荐的该市修改永久排除保留端口:
首选关闭docker, 用管理员权限打开powershell, 输入以下命令用于关闭Hyper-V:
1 | dism.exe /Online /Disable-Feature:Microsoft-Hyper-V |
该操作可能需要重启
然后将3306端口永久排除:
1 | netsh int ipv4 add excludedportrange protocol=tcp startport=3306 numberofports=1 store=persistent |
最后重启Hyper-V:
1 | dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All |
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Damingerdai's Blog!