docker的自啟動
- 通過sysv-rc-conf等管理
啟動腳本
# docker.service
#!/bin/sh
sudo systemctl enable docker
sudo systemctl start docker
將腳本放置在/etc/init.d/目錄下,修改成root執行權限,然后輸入
sysv-rc-conf
在界面上設置啟動權限。
如果是apt安裝的docker,啟動腳本已經自動放置在/etc/init.d/目錄下了。
docker容器的自啟動
我們設置了docker自啟動后,docker可以管理各種容器了,對於容器我們也可以設置重啟的策略。
在容器退出或斷電開機后,docker可以通過在容器創建時的--restart參數來指定重啟策略;
# 多個參數值選擇
no 不自動重啟容器. (默認值)
on-failure 容器發生error而退出(容器退出狀態不為0)重啟容器,可以指定重啟的最大次數,如:on-failure:10
unless-stopped 在容器已經stop掉或Docker stoped/restarted的時候才重啟容器
always 在容器已經stop掉或Docker stoped/restarted的時候才重啟容器,手動stop的不算
# 設置啟動策略
docker run --restart always --name mynginx -d nginx
- 如果容器已經被創建,我們想要修改容器的重啟策略
docker update --restart no mynginx
注意:
-
容器只有在成功啟動后restart policy才能生效。這里的"成功啟動"是指容器處於up至少10秒且已經處於docker監管。這是避免沒有成功啟動的容器陷入restart的死循環。
-
如果手動stop一個容器,容器設置的restart policy將會被忽略,除非Docker守護進程重啟或者容器手動重啟;這是避免了如果重啟策略設置了always,如果不忽略policy那么容器無法手動停止。
使用supervisor監控進程
將supervisor安裝在容器中,通過它去監控容器中的那個進程,這個監控過程docker是無感知的,不推薦這么做。因為將docker容器看做一個進程,docker守護進程其實就充當了supervisor管理所有進程的角色,這時supervisor就可以淘汰了。