执行第8步./vendor/bin/sail up -d最后报错Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306
写这个主要是记录一下遇到错误的解决办法,还有就是帮助后续和我遇到同样问题的伙伴快速解决,其中1、2分类是命令行和桌面启动的报错及处理办法
1.我在执行第8步的时候报错图如下:
该错误是由于本地3306端口被占用,很可能是本地已经安装了mysql,mysql服务已经启动导致的
解决办法一:打开服务,找到mysql服务,将其停止,或者更换端口
然后执行命令
docker run --name MYSQL -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -itd mysql:latest /bin/bash
解决办法二:更换端口映射
docker run --name MYSQL -e MYSQL_ROOT_PASSWORD=123456 -p 3309:3306 -itd mysql:latest /bin/bash
说明:-p 3309:3306:-p 宿主机端口:容器端口,即将宿主机3309端口映射到容器的3306端口,在宿主机登录容器数据库的时候,使用宿主机端口,如3309
2。在docker 桌面系统里启动example-app 里的mysql报错信息如下:
Error invoking remote method 'docker-start-container': Error: (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
首先重启计算机(宿主),重启后在命令行(或WSL2)执行
docker ps -a
查看无法启动的容器ID,接着执行
docker restart 容器ID
如果还无法启动,尝试允许Windows(Linux)防火墙通过该端口,确定不是防火墙拦截