跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Shell / Bash

Docker Compose 重启策略详解:always、on-failure、no 与 unless-stopped 的区别

Docker Compose 提供四种重启策略:always、on-failure、no 和 unless-stopped。always 无论退出原因均重启;on-failure 仅非零退出码时重启;no 不自动重启;unless-stopped 除手动停止外均重启。合理配置可提升系统稳定性与容错能力,适用于 Web 服务、后台任务及临时调试等不同场景。

星辰大海发布于 2026/3/15更新于 2026/5/314 浏览

Docker Compose 重启策略详解

在容器化应用部署中,确保服务的高可用性是关键目标之一。Docker Compose 提供了灵活的重启策略配置,用于控制服务容器在不同场景下的启动与恢复行为。通过合理设置重启策略,可以在系统重启、容器异常退出等情况下自动拉起服务,从而提升系统的稳定性与容错能力。

重启策略类型

Docker Compose 支持四种主要的重启策略,可通过 restart 字段在服务配置中指定:

  • no:默认策略,容器不会在退出后自动重启。
  • always:无论退出原因如何,容器总会被重启。
  • on-failure:仅当容器以非零退出码退出时才会重启,可选限制重启次数。
  • unless-stopped:总是重启容器,除非它被手动停止。

配置示例

以下是一个使用 docker-compose.yml 配置不同重启策略的示例:

version: '3.8'
services:
  web:
    image: nginx:alpine
    restart: always
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    restart: on-failure:3

上述配置中,web 服务将始终被重启以保证服务在线;而 db 服务则在发生错误时尝试重启三次。

策略适用场景对比

策略适用场景是否推荐长期运行服务
alwaysWeb 服务器、API 服务是
on-failure批处理任务、数据库初始化视情况而定
unless-stopped后台守护进程、日志收集器强烈推荐
no临时调试容器否

策略机制解析

1. always 策略

该策略确保容器在任何情况下(包括崩溃或系统重启)都会自动重启。适用于需要高可用性的核心服务。

2. on-failure 策略

仅在容器以非零退出码(表示异常)退出时触发重启。可配合最大重试次数限制,防止无限循环重启消耗资源。

3. no 策略

这是默认行为。容器退出后保持停止状态,不会自动恢复。适用于一次性任务或调试环境。

4. unless-stopped 策略

容器会在守护进程启动时自动运行,除非之前被显式执行过 docker stop 命令。这允许管理员在维护期间暂停服务而不影响后续自动恢复。

最佳实践建议

在生产环境中,建议根据服务的重要性选择策略:

  • 关键业务服务推荐使用 always 或 unless-stopped。
  • 开发测试环境可使用 no 避免干扰。
  • 结合监控告警系统,及时发现并处理频繁重启的服务。

目录

  1. Docker Compose 重启策略详解
  2. 重启策略类型
  3. 配置示例
  4. 策略适用场景对比
  5. 策略机制解析
  6. 1. always 策略
  7. 2. on-failure 策略
  8. 3. no 策略
  9. 4. unless-stopped 策略
  10. 最佳实践建议
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 计算机网络基础定义与资源交换机制
  • 分布式文件系统 HDFS 核心概念解析
  • 使用 cpolar 内网穿透远程访问 Open-Lovable 网页克隆工具
  • RocketMQ 5.0 延时消息架构:时间轮算法与分布式调度实践
  • 七年自学 Python 编程之路:从易语言到全栈开发的技术成长复盘
  • Python 核心语法精讲:变量、流程控制与数据结构
  • VSCode Copilot 无法登录原因排查与恢复指南
  • Unity WebGL 全屏控制与 UI 自适应布局实战
  • jQuery DOM 操作详解:节点创建、插入与删除实战
  • Java 面试实战:从局部变量看 JVM 垃圾回收机制
  • 大型语言模型:概念、技术与应用
  • C++ std::stringstream 核心用法与实战解析
  • MyBatisPlus 与 Thymeleaf 全栈分页实战指南
  • C++ String 类基础与经典算法题实战
  • GitHub 学生认证与 PyCharm Copilot 配置全流程指南
  • GitHub 高星支持 A 股分析的 AI 开源项目
  • 飞牛 NAS 部署 OpenWebUI 接入 DeepSeek AI 大模型
  • Python 递归实现任意进制转换
  • 信捷 PLC 六轴机器人运动控制与码垛程序解析
  • IntelliJ 插件开发实战:索引与 PSI 存根机制

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online