Docker 容器启动失败常见报错排查(超全实战版)
一、万能排查三板斧(所有问题先执行)
容器启动失败,优先执行以下命令定位原因:
# 1. 查看所有容器(包括已退出)
docker ps -a
# 2. 查看容器日志(核心排查方式)
docker logs -f 容器ID
# 3. 查看容器详细错误信息
docker inspect 容器ID
二、高频报错1:端口占用无法启动
报错信息:
bind for 0.0.0.0:8080 failed: port is already allocated
原因: 端口被其他程序占用
解决方案:
# 查找占用端口的进程
lsof -i:8080
netstat -tulpn | grep 8080
# 杀死占用进程
kill -9 进程ID
# 或修改容器映射端口
docker run -p 新端口:8080 镜像名
三、高频报错2:镜像不存在
报错信息:
Error: No such image: xxx
原因: 本地无该镜像 / 镜像名写错
解决方案:
# 查看本地镜像
docker images
# 重新拉取镜像
docker pull 镜像名:版本
# 检查镜像名称与标签是否正确
四、高频报错3:权限不足(permission denied)
原因: 容器内用户无权限、挂载目录权限不足
解决方案:
# 1. 给挂载目录授权
chmod -R 777 挂载目录
# 2. 使用root用户启动容器
docker run --user root 镜像名
# 3. 检查宿主机SELinux是否开启(关闭可解决)
setenforce 0
五、高频报错4:容器启动后立即退出
现象: 容器状态 Exited (0) 或 Exited (1)
常见原因:
• 前台进程退出(容器必须有前台进程运行)
• 启动命令错误
• 配置文件错误
• 依赖服务未启动
解决方案:
# 1. 强制后台运行
docker run -d --restart=always 镜像名
# 2. 交互式进入容器手动启动(排查最有效)
docker run -it --entrypoint=/bin/bash 镜像名
# 3. 查看日志定位具体错误
docker logs 容器ID
六、高频报错5:数据卷挂载失败
报错: permission denied / no such file or directory
解决:
1. 手动创建宿主机目录
2. 授权目录 chmod 777
3. 检查挂载路径是否写错
七、高频报错6:磁盘空间不足
报错: no space left on device
解决:
# 清理无用镜像/容器/卷
docker system prune -a
# 查看磁盘占用
df -h
八、高频报错7:依赖服务未启动
现象: 应用容器连接 MySQL/Redis 失败
解决:
1. 先启动依赖服务
2. 检查网络是否互通(docker network)
3. 检查连接地址/账号密码是否正确
九、Docker 启动失败排查总结
标准排查流程:
1. 看状态 → docker ps -a
2. 看日志 → docker logs
3. 看端口 → 端口冲突
4. 看权限 → 挂载目录权限
5. 看配置 → 命令/环境变量
6. 看依赖 → 数据库/中间件
按照以上步骤,99% 的 Docker 启动失败问题都能快速解决!