«

Docker容器重启策略on-failure与always区别

时间:2026-11-15 07:16     作者:emer     分类: Docker


前言

容器崩溃后要不要自动拉起,靠 --restart 重启策略。always 和 on-failure 行为不同,选错会导致异常退出也无限重启,或正常退出后反复拉起。本文讲解四种策略、区别、设置和查看。

操作步骤

1. 四种策略

2. 启动时指定 always

docker run -d --restart=always nginx

3. on-failure 并限制重试次数

docker run -d --restart=on-failure:5 nginx

4. 给已有容器改策略

docker update --restart=always 容器名

5. 查看当前策略

docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' 容器名

常见坑

  1. always 在容器正常退出后也会被拉起,不适合一次性任务。
  2. on-failure 不限次数,崩溃循环会反复重启。
  3. unless-stopped 与 always 的差别在于手动 stop 后是否尊重。
  4. 一次性迁移脚本用 always 会无限重启,应选 no。
  5. 宿主机重启后 always/unless-stopped 自动拉起,no 不会。
  6. 重启次数过多要看日志找根因,不能只靠策略。
  7. Compose 里用 restart: always 字段配置。

总结

always 无条件自动重启适合常驻服务,on-failure 仅失败重启并可限次数,unless-stopped 尊重手动停止,no 用于一次性任务。常驻服务选 always,批处理任务选 no,改策略用 docker update。

遇到问题加QQ23979811 协助处理

标签: Docker 容器 restart 重启策略