当Docker容器启动失败时,可以通过以下系统化的步骤进行排查和解决:
docker logs <container_id_or_name>
--tail 100
查看最后100行日志,或 -f
实时跟踪日志。docker ps -a
Exited
、Created
)和退出代码:
137
=内存不足,139
=段错误)。docker run -it --rm <image_name> /bin/sh
/bin/bash
或其他Shell。docker run -p 80:80
若宿主机80端口被占用会失败。-v
参数指定的宿主机路径是否存在。-e
传递必要变量,或检查Dockerfile中的 ENV
。# 系统日志(Linux)
journalctl -u docker --no-pager -n 50
# 或直接查看Docker日志文件
tail -n 50 /var/log/docker.log
bash
docker build -t test-image .
ENTRYPOINT
/CMD
是否指向有效的可执行文件。CMD ["nginx", "-g", "daemon off;"]
)。bash
docker run -m 512m <image_name>
bash
docker system df # 查看磁盘使用
docker system prune # 清理无用资源
docker network ls
检查网络)。Bind mount failed: file not found
OCI runtime create failed: container_linux.go:380
bash
docker pull <image_name> # 重新拉取镜像
setenforce 0 # 临时禁用SELinux(仅测试用)
docker inspect
:
bash
docker inspect <container_id> | grep -i "error\|fail"
容器启动失败 → 查看日志 → 检查状态和退出码 → 交互式调试 →
检查配置/资源 → 分析Dockerfile → 检查依赖服务 → 查阅守护进程日志
通过以上步骤,90%的启动问题可以快速定位。若仍无法解决,建议提供完整的错误日志和Dockerfile以进一步分析。