Docker 提供重启策略来控制容器是在退出时自动启动,还是在 Docker 重启时自动启动。重启策略会按正确的顺序启动链接的容器。Docker 建议您使用重启策略,并避免使用进程管理器来启动容器。

docker run命令时使用--restart标志配置重启策略,支持:

  • no
  • on-failure[:max-retries]
  • always
  • unless-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-stoppedalways类似,不同之处在于,当容器停止(手动或其他方式)时,即使 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 服务的重启策略,请参阅 与服务重启相关的标志

参考:自动启动容器

标签: Docker

添加新评论