Docker 容器重启策略
Docker 提供重启策略来控制容器是在退出时自动启动,还是在 Docker 重启时自动启动。重启策略会按正确的顺序启动链接的容器。Docker 建议您使用重启策略,并避免使用进程管理器来启动容器。
docker run命令时使用--restart标志配置重启策略,支持:
noon-failure[:max-retries]alwaysunless-stopped
Example
# 启动redis容器时候设置重启策略
docker run -d --restart unless-stopped redis
# 修改已经启动的redis容器重启策略
docker update --restart unless-stopped redis使用重启策略
要配置容器的重启策略,请在使用docker run命令时使用--restart标志。--restart标志的值可以是以下任意一项:
| Flag | 描述 |
|---|---|
no | 不自动重启容器。(默认) |
on-failure[:max-retries] | 如果容器因错误而退出(表现为非零退出代码),则重新启动容器。可以选择使用此:max-retries选项限制 Docker 守护程序尝试重新启动容器的次数。on-failure仅当容器因失败而退出时,该策略才会提示重新启动。如果守护程序重新启动,则不会重新启动容器。 |
always | 如果容器停止,请务必重新启动它。如果容器是手动停止的,则只有在 Docker 守护进程重新启动或容器本身手动重新启动时,它才会重新启动。(请参阅 重启策略详情中的第二项) |
unless-stopped | 与always类似,不同之处在于,当容器停止(手动或其他方式)时,即使 Docker 守护程序重新启动后它也不会重新启动。 |
以下命令启动 Redis 容器并将其配置为始终重新启动,除非明确停止容器或守护程序重新启动。
docker run -d --restart unless-stopped redis以下命令更改名为 redis 的已运行容器的重启策略。
docker update --restart unless-stopped redis以下命令确保所有正在运行的容器重新启动。
docker update --restart unless-stopped $(docker ps -q)重启策略详细信息
使用重启策略时请记住以下几点:
- 重启策略仅在容器成功启动后生效。在这种情况下,成功启动意味着容器已启动至少 10 秒,并且 Docker 已开始对其进行监控。这可以防止容器完全无法启动而陷入重启循环。
- 如果您手动停止容器,重启策略将被忽略,直到 Docker 守护进程重新启动或手动重启容器。这可以防止出现重启循环。
- 重启策略仅适用于容器。要配置 Swarm 服务的重启策略,请参阅 与服务重启相关的标志。
参考:自动启动容器