Docker容器不重启可能由以下几种情况引起:
容器配置问题:
--restart
策略容器内部进程崩溃:
系统资源限制:
Docker守护进程问题:
# 查看容器当前重启策略
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' <容器名>
# 设置容器自动重启策略
docker update --restart=always <容器名>
可用重启策略:
- no
:不自动重启(默认)
- on-failure
:非正常退出时重启
- always
:总是重启
- unless-stopped
:除非手动停止,否则总是重启
# 查看容器日志
docker logs <容器名>
# 检查容器退出状态
docker inspect --format='{{.State.ExitCode}}' <容器名>
# 查看容器资源使用情况
docker stats
# 检查系统OOM事件
dmesg | grep -i oom
# 检查Docker服务是否运行
systemctl status docker
# 查看Docker守护进程日志
journalctl -u docker -n 100
使用健康检查:
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost/ || exit 1
配置进程监控:
supervisord
等进程管理器管理容器内多个进程资源限制调整:
# 调整容器内存限制
docker update --memory=512m --memory-swap=1g <容器名>
使用容器编排工具:
docker-compose
或Kubernetes清单文件管理容器配置通过以上方法,您可以有效解决Docker容器不自动重启的问题,并提高容器化应用的可靠性。