在运行 docker run
命令启动容器时,可以通过 --restart
指定容器退出时的重启策略 (在 docker-compose 中则使用 restart
关键字来指定) 。
目前 docker 19.03 中支持的重启策略有以下几种:
策略 | 描述 |
---|---|
no | 不自动重启(默认模式) |
on-failure[:max-retries] | 重启因出错停止的容器(非0退出码)。可以通过指定max-retries来限定docker daemon的最大尝试重启次数 |
always | docker daemon会无限尝试重启退出的容器(无论以什么退出码退出)。手动停止容器后,容器策略不再生效。除非重启 docker deemon |
unless-stopped | 与always 类似,区别在于手动停止容器后,就算重启 docker deemon ,容器策略也不再生效。 |
注意事项:
- 重启策略只有在容器启动成功之后才会生效。这里的启动成功指的是容器至少运行了10秒,docker deamon已经开始监控它了。这防止了一个根本无法启动成功的容器陷入重启死循环。
- 手动停止容器后重启策略会失效,直到 docker daemon 被重启或手动重启容器后,重启策略才会再次生效。主要是为了防止重启死循环。
- 这里的重启策略只适用于普通容器,有关
swarm service
的重启策略请查看官方文档。
Reference: https://docs.docker.com/config/containers/start-containers-automatically/#use-a-restart-policy