Start containers automatically

Docker 提供 restart 策略 控制容器在某些情境想是否自动重启。 重启策略保证了通过 --link 连接的容器以正确的顺序启动,而不在使用进程管理器控制启动流程。

重启策略与 dockerd--live-restore 参数不一样。使用 --live-restore 允许你在 Docker升级期间保持容器运行,但 网络用户输入 会被中断。

Use a restart policy

在使用 docker run 命令启动容器时,使用 --restart 可以为容器指定重启策略。 --restart 的可选值包括以下

Flag 描述
no 不要自动重新启动容器。(默认)
on-failure 如果由于出现错误而重新启动容器,该错误显示为非零退出代码。
unless-stopped 重新启动容器,除非它被显示停止或Docker本身被停止或重新启动。
always 如果停止,请务必重新启动容器。

以 redis 容器为例, 除非明确停止或 docker 重启, 容器始终会重启。

$ docker run -dit --restart unless-stopped redis

Restart policy details

使用重新启动策略时,请记住以下几点:

  • 重新启动策略仅在容器启动成功后生效。在这种情况下,启动成功意味着容器至少持续 10 秒钟,Docker 已经开始监视它。这样可以防止根本不启动的容器进入重启循环。
  • 如果您 手动 停止容器,则重新启动策略将被忽略,直到 Docker 守护程序重新启动或容器被手动重新启动。这是防止重新启动循环的另一个尝试。
  • 重新启动策略仅适用于容器。群组服务的重新启动策略配置不同。看 flags related to service restart

Use a process manager

如果重启策略满足要求,可以使用 进程管理工具,例如 upstart, systemdsupervisor

进程管理工具运行在容器内,并检查容器内的进程是否启动,如果没有则启动它。这不是 Docker-aware 的,仅监控容器内的进程。 不推荐使用这种方式,因为这是基于系统平台的,不同 Linux 发行版之间。

警告: 不要将 docker 重启策略主机级别 的进程管理工具混用,二者可能冲突。

如果要使用进程管理器,在启动容器或服务时,需要将其配置成为类似手动使用 docker startdocker service 启动容器或服务。o use a process manager, configure it to start your container or service using the same docker start or docker service command you would normally use to start the container manually.

results matching ""

    No results matching ""