docker——重启策略

参考网址

docker的重启策略

Docker 容器的重启策略具体如下:

  • no
    默认策略,在容器退出时不重启容器。启动容器时不添加参数 --restart 即可。
  • on-failure
    在容器非正常退出时(退出状态非0),才会重启容器。
  • on-failure:n
    在容器非正常退出时重启容器,并且指定重启次数。n 为正整数。如果不指定次数,则会一直重启。
  • always
    只要容器退出就重启容器。
  • unless-stopped
    在容器退出时总是重启容器,但是 Docker 守护进程启动之前就已经停止运行的容器不算在内。

docker容器的退出状态码

Docker 容器也有退出状态码,这一点类似 Linux 命令。Docker 容器的重启策略就是基于状态码。具体如下:

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

获取docker容器退出状态码的方法

  • 使用docker ps -a的方法

该命令结果的第 5 列中 Exited 后面括号中的数字就是容器的退出状态码。如下所示,Exited (1) 33 minutes ago,1 就是这个容器的退出状态码。但是 1 并不是容器本身的退出状态码,而是容器中运行的命令执行失败后退出的状态码。在 Linux 系统定义的命令退出状态码中,1 表示未知,即系统不知道具体错误的原因。这时候就需要看具体的日志来判断。

[root@k8s-master /]# docker ps -a | grep nginx
3e64cad716c0   192.168.100.20:5000/mynginx:latest   "nginx"   36 minutes ago   Exited (1) 33 minutes ago    nginx-demo

容器已经启动,但是忘记使用--restart=always如何补救?

  • 使用update命令

    [root@k8s-master /]# docker container update --restart=always 3e64cad716c0
    3e64cad716c0

  • 修改容器的配置文件

vim /var/lib/docker/containers/容器ID/hostconfig.json,找到关键字 RestartPolicy,将 no 改为 always

修改前:

"RestartPolicy:{"Name":"no","MaximumRetryCount":0}

修改后:

"RestartPolicy:{"Name":"always","MaximumRetryCount":0}

重启容器即可。如果无法修改容器的配置,可先将容器停止,修改配置文件后再启动。

相关推荐
小wanga6 分钟前
【Linux】网络层、数据链路层、DNS、ICMP协议、NAT技术
linux·运维·网络
最数据16 分钟前
收集了一些docker修改镜像源地址
docker·容器·镜像源·国内源地址
IT成长日记1 小时前
Ansible运行原理揭秘:如何用YAML脚本掌控数服务器?
运维·服务器·ansible·架构与原理
云上艺旅1 小时前
K8S学习之基础二十四:k8s的持久化存储之pv和pvc
学习·云原生·容器·kubernetes
千羽星弦1 小时前
Jenkins在Windows上的使用(二):自动拉取、打包、部署
运维·windows·jenkins
Ashmcracker1 小时前
Jenkins链接私有仓库Failed to connect to repository,stderr: No ECDSA...的问题
运维·jenkins·devops
嵌入式-老费1 小时前
Linux上位机开发实战(x86和arm自由切换)
linux·运维·arm开发
人间凡尔赛1 小时前
VSCode-Server 在 Linux 容器中的手动安装指南
linux·运维·服务器·docker
Sans_2 小时前
初识Docker-Compose(包含示例)
后端·docker·容器
板鸭〈小号〉2 小时前
Linux开发工具----vim
linux·运维·vim