看到某台服务器,开机之后,一大堆的容器会自动启动起来。查看了/etc/rc.local,没看到开机调用脚本启动容器的相关代码。于是又做了一个实验,systemctl stop docker,systemctl start docker,发现这大堆容器也跟着重启了,说明它们的启动不是受脚本控制的,而是跟docker服务绑定在一起的。搜索了一下,看到以下的有用信息
https://www.cloudbees.com/blog/ensuring-containers-are-always-running-with-dockers-restart-policy/
https://docs.docker.com/config/containers/start-containers-automatically/
这些docker应该都是设置了--restart always。要确定某个docker的restart policy设置,可以用
docker inspect my-container
在 HostConfig 项目的 RestartPolicy 子项
"HostConfig": {
...
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
或者
docker inspect -f "{{ .HostConfig.RestartPolicy }}" my-container
而修改某个已经启动的容器的restart策略,可以用
docker update --restart unless-stopped redis
而修改所有已经在运行的容器的restart策略,可以用
docker update --restart unless-stopped $(docker ps -q)
网友评论