使用方法:

docker container update --restart=always  容器名字

docker run --restart=always --name ng_test  -d nginx
//无论容器退出代码是什么,docker 都会自动重启容器

限制重启次数--restart=on-failure:5 ,当容器退出代码不为0时,最多重启5次.


Docker容器的重启策略

Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略
Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

Docker容器的退出状态码

docker run的退出状态码如下:
0,表示正常退出
非0,表示异常退出(退出状态码采用chroot标准)
125,Docker守护进程本身的错误
126,容器启动后,要执行的默认命令无法调用
127,容器启动后,要执行的默认命令不存在


其他命令状态码,容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码3.

通过--restart选项,可以设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器
--restart  通常只用于detached模式的容器
--restart  不能与–rm选项同时使用。显然,--restart选项适用于detached模式的容器,而–rm选项适用于foreground模式的容器
在docker ps查看容器时,对于使用了--restart选项的容器,其可能的状态只有Up或Restarting两种状态

docker run -d --restart=always n1
docker run -d --restart=on-failure:10 n1

查看容器重启次数
docker inspect -f "{{ .RestartCount }}" n1

查看容器最后一次的启动时间
docker inspect -f "{{ .State.StartedAt }}" n1

自动重启容器
如果出于某种错误而导致容器停止运行,可以通过--restart标志,让docker自动重启该容器。--restart标志会自动检查容器退出代码,由此来决定是否重启容器,默认不会重启机器。此标志是docker1.2.0引入的选项。

无论退出代码是什么,都会重启容器
docker run --restart=always --name daemon_dave -d ubuntu /bin/sh -c “while; do echo hello world ;sleep 3; done”

只有当容器退出代码为非0值的时候,才会重启容器
docker run --restart=on-failure --name daemon_dave -d ubuntu /bin/sh -c “while; do echo hello world ;sleep 3; done”

退出代码非0值,尝试重启容器,最多重启5次
docker run --restart=on-failure:5 --name daemon_dave -d ubuntu /bin/sh -c “while; do echo hello world ;sleep 3; done”

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐