Docker自动启动容器
Docker提供了重新启动策略 来控制容器在退出时或Docker重新启动时是否自动启动。重新启动策略可确保以正确的顺序启动链接的容器。Docker建议您使用重新启动策略,并避免使用进程管理器来启动容器。
重新启动策略--live-restore
与dockerd
命令的标志不同。--live-restore
尽管网络和用户输入中断,但使用允许您在Docker升级期间保持容器运行。
使用重启策略
要为容器配置重新启动策略,请在使用docker run
命令时使用--restart
标志。--restart
标志的值可以是以下任何一种:
旗 | 描述 |
---|---|
no |
不要自动重启容器。(默认) |
on-failure |
如果容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码。 |
always |
如果容器停止,请务必重启容器。如果手动停止,则仅在Docker守护程序重新启动或手动重新启动容器本身时才重新启动。(参见重启政策详情中列出的第二个项目) |
unless-stopped |
类似于always ,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器。 |
以下示例启动Redis容器并将其配置为始终重新启动,除非手动停止
。
1 | docker run -dit --restart always redis |
重启政策详情
使用重启策略时请记住以下几点:
- 重启策略仅在容器成功启动后生效。在这种情况下,成功启动意味着容器启动至少10秒并且Docker已开始监视它。这可以防止根本不启动的容器进入重启循环。
- 如果手动停止容器,则会忽略其重新启动策略,直到Docker守护程序重新启动或手动重新启动容器。这是防止重启循环的另一种尝试。
- 重新启动策略仅适用于容器。群组服务的重新启动策略配置不同。请参阅与服务重新启动相关的 标志。
如果run时没有添加restart 可以通过update命令追加
1 | docker update --restart=always redis |
- 先后台启动容器未加restart参数
- docker ps 查看了当前运行的容器
- 重启docker 服务
- 再次docker ps 查看当前运行的容器,发现容器并没有运行
- 利用 update 设置 restart=always
- 重启docker 服务
- 再次docker ps 查看当前运行的容器,此时发现已经自动启动容器