Linux中配置Docker容器自动重启需使用--restart参数,支持no、always、on-failure[:max-retries]、unless-stopped四种策略,可通过docker run运行时指定或docker update动态修改,配合docker inspect和docker logs验证排查。

Linux中配置Docker容器自动重启,核心是使用 --restart 参数,它在容器启动时指定重启策略,而非依赖外部进程管理工具(如systemd或supervisord)。
常用重启策略类型及适用场景
Docker提供四种内置重启策略,根据容器退出原因和业务需求选择:
- no:默认策略,容器退出后不自动重启(适合一次性任务)
- always:无论退出状态码如何,总是重启;Docker守护进程启动时也会尝试启动该容器(适合长期服务,如Nginx、PostgreSQL)
-
on-failure[:max-retries]:仅当容器以非0状态码退出时重启,可选限制最大重试次数(如
on-failure:3,适合可能临时失败但需有限重试的应用) -
unless-stopped:类似
always,但跳过被手动docker stop停止的容器(最常用,兼顾自动恢复与人工干预)
运行时配置重启策略(docker run)
在启动容器时直接指定:
docker run -d --restart unless-stopped --name myapp nginx:alpine
若需限制失败重试次数:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
docker run -d --restart on-failure:5 --name api-service python:3.11-slim python app.py
为已存在容器更新重启策略
Docker 20.10+ 支持直接修改运行中或已停止容器的重启策略(无需重建):
docker update --restart unless-stopped myapp
注意:docker update 不影响容器当前状态,只更新元数据;修改后重启策略在下次容器启动(或守护进程重启)时生效。
验证与排查要点
确认策略是否生效:
- 查看容器详细信息:
docker inspect myapp | grep -i restart - 检查实际重启行为:用
docker ps -a观察 STATUS 列是否含Restarting (X)或历史重启次数 - 注意:
always和unless-stopped在 Docker 守护进程重启后会自动拉起容器;而on-failure不触发此行为 - 若容器启动即退出且未重启,先检查日志:
docker logs myapp,确认是应用崩溃还是配置错误(如端口冲突、挂载路径不存在)
重启策略是容器健壮性的基础保障,合理选用并配合健康检查(--health-cmd)能进一步提升服务可靠性。不复杂但容易忽略。

















