创建容器时没有添加参数 –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 !!!!!!