创建容器时没有添加参数 –restart=always ,导致的后果是:当 Docker 重启时,容器未能自动启动。
现在要添加该参数怎么办呢,方法有二:
1 重启策略及–restart选项详解
1. Docker容器的重启策略
Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。
Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。
Docker容器的重启策略如下:
no,默认策略,在容器退出时不重启容器on-failure,在容器非正常退出时(退出状态非0),才会重启容器on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
2. Docker容器的退出状态码
docker run的退出状态码如下:
0,表示正常退出非0,表示异常退出(退出状态码采用chroot标准)- 125,Docker守护进程本身的错误
 - 126,容器启动后,要执行的默认命令无法调用
 - 127,容器启动后,要执行的默认命令不存在
 - 其他命令状态码,容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码
 
3. docker run的–restart选项
通过--restart选项,可以设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器。--restart选项通常只用于detached模式的容器。
--restart选项不能与--rm选项同时使用。显然,-restart选项适用于detached模式的容器,而--rm选项适用于foreground模式的容器。
在docker ps查看容器时,对于使用了--restart选项的容器,其可能的状态只有Up或Restarting两种状态。
示例:
1  | docker run -d --restart=always bba-208  | 
补充:
查看容器重启次数
1  | docker inspect -f "{{ .RestartCount }}" bba-208  | 
查看容器最后一次的启动时间
1  | docker inspect -f "{{ .State.StartedAt }}" bba-208  | 
2、Docker 命令修改
1  | docker container update --restart=always 容器名字  | 
1  | 操作实例如下:  | 
3、直接改配置文件
(经测试后无效,修改配置文件后,启动容器后,该参数有自动变成了no,修改不生效)
首先停止容器,不然无法修改配置文件
配置文件路径为:/var/lib/docker/containers/容器ID
在该目录下找到一个文件 hostconfig.json,找到该文件中关键字 RestartPolicy
修改前配置:"RestartPolicy":{"Name":"no","MaximumRetryCount":0}
修改后配置:"RestartPolicy":{"Name":"always","MaximumRetryCount":0}
最后启动容器。
4 修改docker容器的挂载路径
- 停止所有docker容器
 
1  | sudo docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)  | 
- 停止docker服务
 
1  | sudo service docker stop  | 
- 修改mysql路径
 
1  | cd ~  | 
- 备份容器配置文件
 
1  | cd /var/lib/docker/containers/de9c6501cdd3  | 
- 修改hostconfig的冒号前的配置路径
 
1  | vi hostconfig.json  | 
- 修改config的Source的配置路径
 
1  | vi config.v2.json  | 
5 修改docker默认的存储位置
docker 的所有images及相关信息存储位置为:/var/lib/docker
- 查看默认的docker存储路径
 
1  | docker info |grep 'Docker Root Dir'  | 
- 停止所有docker容器
 
1  | sudo docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)  | 
- 停止docker服务
 
1  | sudo service docker stop  | 
- 打包docker目录
 
1  | sudo tar -czvf /usr/docker.tar.gz docker/  | 
- 修改docker默认的存储位置
 
1  | sudo vim /etc/docker/daemon.json  | 
- 启动docker服务
 
1  | sudo service docker start  | 
- 启动所有docker容器
 
1  | sudo docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)  | 
- 查看修改后docker存储路径
 
1  | docker info |grep 'Docker Root Dir'  | 
本文转自:https://www.cnblogs.com/zhuochong/p/10070516.html !!!!!!