问题描述
window10 环境下 安装了wsl2+docker desktop。使用docker compose up
启动一个应用时,报错信息如下:
docker: Error response from daemon: 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.
使用下面命令查看端口禁用情况,
netsh interface ipv4 show excludedportrange protocol=tcp
显示结果如下:
可以发现报错的端口,在被禁用列表中。
报错原因
widows 10 下 开启 hyper-v,会默认禁用一些端口。需要手动把这些端口移除禁用。
解决方案
- 禁用 hyper-v (运行完成会自动重启电脑)
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
- 重启完成后,使用下面命令,将需要的端口移出禁用列表
netsh int ipv4 add excludedportrange protocol=tcp startport=8190 numberofports=5
netsh int ipv4 add excludedportrange protocol=tcp startport=8290 numberofports=4
- 再次启用 hyper-V (该过程中会自动重启电脑)
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
完成上述步骤后,可以正常运行docker compose up
.