High Sierra系统Docker Desktop中nginx异常:终端显示创建完成却未运行
Docker Desktop状态不同步+Nginx无法访问的排查方案
问题背景
终端执行容器创建命令后,返回所有容器创建完成:
Creating webroker_docker-in-docker_1 ... done Creating webroker_mysql_1 ... done Creating webroker_workspace_1 ... done Creating webroker_php-fpm_1 ... done Creating webroker_nginx_1 ... done
但Docker Desktop UI显示webroker_nginx_1未运行,同时浏览器无法访问http://localhost。
排查步骤
- 确认容器真实运行状态:在终端执行
docker ps -a,查看所有容器的状态(包括已退出的),确认Nginx容器是真的启动失败,还是UI状态延迟。 - 查看Nginx容器日志:执行
docker logs webroker_nginx_1,从日志中定位启动失败原因,常见的有配置文件语法错误、端口冲突、依赖服务(如php-fpm)未就绪等。 - 检查端口映射与占用:
- 核对docker-compose.yml(或启动命令)中Nginx的端口映射规则,确认容器内端口(通常是80)已正确映射到主机端口。
- 检查主机端口是否被占用:
- macOS/Linux:执行
lsof -i :80 - Windows:执行
netstat -ano | findstr ":80"
若端口被占用,停止占用进程或修改Nginx的端口映射。
- macOS/Linux:执行
- 同步Docker UI状态:重启Docker Desktop,解决UI与后端状态不同步的问题。
- 重建Nginx容器:先清理现有容器,再重新创建:
docker stop webroker_nginx_1 && docker rm webroker_nginx_1 # 重新执行你的容器创建命令(比如docker-compose up) - 检查Docker资源配置:如果Docker分配的内存、CPU不足,可能导致容器启动失败,进入Docker Desktop设置调整资源配额后重试。
内容的提问来源于stack exchange,提问作者Marcello Pato
相关产品推荐
相关产品推荐

