©
This document uses PHP Chinese website manual Release
Docker提供了重新启动策略,以控制容器在退出时是自动启动还是在Docker重新启动时启动。重新启动策略可确保链接的容器以正确的顺序启动。Docker建议您使用重新启动策略,并避免使用流程管理器启动容器。
重新启动策略--live-restore
与dockerd
命令的标志不同。使用--live-restore
允许您在Docker升级期间保持容器运行,但网络和用户输入将被中断。
要为容器配置重新启动策略,请--restart
在使用docker run
命令时使用该标志。--restart
标志的值可以是以下任何一项:
标志 | 描述 |
---|---|
no | 不要自动重启容器。(默认) |
on-failure | 如果容器由于错误而退出,则将其重新启动,该错误表现为非零退出代码。 |
unless-stopped | 重新启动容器,除非它明确停止或者Docker本身停止或重新启动。 |
always | 如果停止,请始终重新启动容器。 |
下面的示例启动Redis容器,并将其配置为始终重新启动,除非显式停止或重新启动Docker。
$ docker run -dit --restart unless-stopped redis
在使用重新启动策略时,请记住以下几点:
重新启动策略仅在容器成功启动后生效。在这种情况下,成功启动意味着容器至少要运行10秒,而Docker已经开始监视它。这样可以防止一个根本不启动的容器进入重新启动循环。
如果手动停止容器,则会忽略它的重新启动策略,直到Docker守护进程重新启动或手动重新启动容器为止。这是防止重新启动循环的另一次尝试。
重新启动策略仅适用于容器。群集服务的重新启动策略配置不同。查看与重新启动服务相关的标志。
如果重新启动策略不适合您的需求,例如Docker以外的进程依赖于Docker容器,则可以使用诸如upstart,systemd或supervisor之类的进程管理器。
流程管理器在容器中运行,检查进程是否正在运行,如果没有运行,则启动进程。它不支持Docker,但只监视容器中的操作系统进程。
Docker不推荐这种方法,因为它依赖于平台,甚至在给定Linux发行版的不同版本中也不同。
警告不要尝试将Docker重新启动策略与宿主级流程管理器相结合,因为这两者将发生冲突。
要使用进程管理器,请将其配置为使用您通常用来手动启动容器的命令docker start
或docker service
命令启动容器或服务。有关更多详细信息,请参阅特定流程管理器的文档。