Docker 重启策略

Docker 和 Docker Compose 的默认重启策略是 no,也就是不重启

各种情况下的默认策略

1. docker run 命令

# 默认情况
docker run your-image
# 等同于
docker run --restart=no your-image

2. Docker Compose

services:
  app:
    image: your-image
    # 默认 restart: "no" (不重启)

3. Dockerfile

# Dockerfile 中无法设置重启策略
# 重启策略只能在运行时设置

所有重启策略对比

no (默认)

  • ✅ 任何情况下都不重启

  • ❌ 进程崩溃后容器停止

always

  • ✅ 总是重启,除非手动停止

  • ✅ Docker 守护进程重启后也会重启

  • ❌ 即使手动停止也会重启(除非 docker stop

on-failure

  • ✅ 只在非正常退出时重启(退出码非0)

  • ❌ 正常退出(退出码0)不重启

unless-stopped

  • ✅ 总是重启,除非手动停止

  • ❌ 手动停止后不会重启

实际测试各种策略

默认策略测试

对比其他策略

生产环境建议

不同环境的策略选择

开发环境:

测试环境:

生产环境:

验证当前策略

查看容器的重启策略

Docker Compose 中查看

总结

关键信息:

  • 默认策略: no (不重启)

  • 推荐生产策略: unless-stopped

  • 开发调试: 保持默认 no

  • 如果不设置: 容器崩溃后就停止,需要手动重启

Last updated

Was this helpful?