docker学习笔记-为容器配置重启策略

2,024 阅读2分钟

docker容器配置重启策略

docker restart policies

docker容器的退出状态码

0 表示正常退出
非0 表示异常退出(退出状态码采用chroot标准)
125 Docker守护进程本身的错误
126 容器启动后,要执行的默认命令无法调用
127 容器启动后,要执行的默认命令不存在
其他命令状态码 容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码

重启策略配置

在docker run 容器时可以通过 --restart来配置该容器的重启策略,当一个容器配置了重启策略时,在docker ps中可以看到该容器的状态只能为 up 或 restarting

dockers包含的重启策略:

重启策略 含义
no 默认的参数,即不重启
on-failure[:max-retries] 在容器非正常退出时(退出状态非0),才会重启容器,最大重启次数为 max-retries
always 在容器退出时总是重启容器,不论退出状态码为多少。 同时在docker守护进程启动,都会重启该容器
unless-stopped 在容器退出时总是重启容器,不论退出状态码为多少。但是在docker守护进程启动时已经停止的容器不会重启

值得注意的是docker在重启失败时会每次增加一个延迟,避免无谓的重启空占资源,例如某个容器启动失败,并设置了重启策略,一开始延迟100ms,紧接着的每一次重启失败,会延迟2倍的时间,意味着200ms,400ms,800ms and so on。直到docker进程被停止,或者容器被删除。

当该容器重新启动成功时(restart success,并且正常运行了超过10s),这个延迟时间会被重置为100ms

容器的重启信息可以在docker inspect中获取,例如次数与时间

$ docker inspect -f "{{ .RestartCount }}" my-container
# 2
$ docker inspect -f "{{ .State.StartedAt }}" my-container
# 2015-03-04T23:47:07.691840179Z

设置了重启策略的容器,不能被clean up ,即docker rm -v my-container

参考:docs.docker.com/engine/refe…