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 服务则在发生错误时尝试重启三次。
策略适用场景对比
| 策略 | 适用场景 | 是否推荐长期运行服务 |
|---|---|---|
| always | Web 服务器、API 服务 | 是 |
| on-failure | 批处理任务、数据库初始化 | 视情况而定 |
| unless-stopped | 后台守护进程、日志收集器 | 强烈推荐 |
| no | 临时调试容器 | 否 |
策略机制解析
1. always 策略
该策略确保容器在任何情况下(包括崩溃或系统重启)都会自动重启。适用于需要高可用性的核心服务。
2. on-failure 策略
仅在容器以非零退出码(表示异常)退出时触发重启。可配合最大重试次数限制,防止无限循环重启消耗资源。

