Docker 容器的重启策略具体如下:
no
on-failure
on-failure:n
always
unless-stopped
Docker 容器也有退出状态码,这一点类似 Linux 命令。Docker 容器的重启策略就是基于状态码。具体如下:
0
非 0
125
126
127
其他命令状态码
该命令结果的第 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
- [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}
重启容器即可。如果无法修改容器的配置,可先将容器停止,修改配置文件后再启动。