Docker 提供重启策略,用以在容器退出或 Docker 重启时自动启动,并确保相关容器按正确的顺序协同启动。官方建议启用重启策略来管理自启,尽量避免借助外部进程管理器。
重启策略中的 –live-restore 与 dockerd 的标志不同。启用 –live-restore 可以让容器在 Docker 升级期间持续运行,即便网络连接或用户输入会中断。
要为容器配置重启策略,在使用 docker run 时请加上 –restart 标志。该标志的取值可以是以下任意一个:
no – 不会自动重启容器(默认)。
on-failure – 如果容器因错误退出则重新启动,错误以非零退出码表示。
always – 容器停止时会重新启动。若是手动停止,只有在 Docker 守护进程重新启动时或容器本身被手动重新启动时才会再次启动。
unless-stopped – 与 always 类似,但在容器被手动停止后,即使 Docker 守护进程重新启动也不会重新启动该容器。
下面的示例演示如何将 Redis 容器设置为始终重新启动,除非你明确将其停止或重新启动 Docker。
$ docker run -d –restart unless-stopped redis
此命令将已在运行中的容器的重启策略改为 unless-stopped。
$ docker update –restart unless-stopped redis
同时,这条命令会确保除非容器被停止,否则当前正在运行的所有容器在需要时都会自动重新启动。
$ docker update –restart unless-stopped $(docker ps -q)
