看到某臺服務(wù)器,開機(jī)之后,一大堆的容器會自動啟動起來。查看了/etc/rc.local,沒看到開機(jī)調(diào)用腳本啟動容器的相關(guān)代碼。于是又做了一個實(shí)驗(yàn),systemctl stop docker,systemctl start docker,發(fā)現(xiàn)這大堆容器也跟著重啟了,說明它們的啟動不是受腳本控制的,而是跟docker服務(wù)綁定在一起的。搜索了一下,看到以下的有用信息
https://www.cloudbees.com/blog/ensuring-containers-are-always-running-with-dockers-restart-policy/
https://docs.docker.com/config/containers/start-containers-automatically/
這些docker應(yīng)該都是設(shè)置了--restart always。要確定某個docker的restart policy設(shè)置,可以用
docker inspect my-container
在 HostConfig 項(xiàng)目的 RestartPolicy 子項(xiàng)
"HostConfig": {
...
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
或者
docker inspect -f "{{ .HostConfig.RestartPolicy }}" my-container
而修改某個已經(jīng)啟動的容器的restart策略,可以用
docker update --restart unless-stopped redis
而修改所有已經(jīng)在運(yùn)行的容器的restart策略,可以用
docker update --restart unless-stopped $(docker ps -q)