依赖服务未就绪
容器配置问题
镜像问题
系统环境问题
检查Docker服务状态
systemctl status docker
journalctl -u docker -n 50 # 查看Docker日志
查看容器日志
docker logs <容器名/ID>
检查容器状态
docker inspect <容器名/ID>
docker ps -a # 查看所有容器状态
尝试手动启动容器
docker start <容器名/ID>
方法一:使用depends_on
(Compose文件)
version: '3'
services:
app:
depends_on:
- db
- redis
方法二:添加健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://dependent-service"]
interval: 30s
timeout: 10s
retries: 3
使用restart
策略:
docker run --restart unless-stopped my-image
或Compose文件中:
restart: unless-stopped
检查并调整资源限制:
docker update --memory 512m --memory-swap 1g <容器名>
确保挂载目录权限正确:
chmod -R 755 /path/to/volume
chown -R 1000:1000 /path/to/volume # 通常容器内用户UID为1000
使用交互模式测试:
docker run -it --entrypoint /bin/sh my-image
然后在容器内手动执行启动命令查看错误
使用docker events
监控事件
docker events --filter 'event=start' --filter 'event=die'
检查容器退出代码
docker inspect -f '{{.State.ExitCode}}' <容器名>
检查内核日志
dmesg | grep -i docker
启用Docker调试模式
dockerd --debug
通过以上方法,通常可以定位并解决Docker容器开机启动失败的问题。如果问题仍然存在,建议提供具体的错误日志以便进一步分析。