Flag | Description |
no | 不自動重啟容器. (默認value) |
on-failure | 容器發生error而退出(容器退出狀態不為0)重啟容器 |
unless-stopped | 在容器已經stop掉或Docker stoped/restarted的時候才重啟容器 |
always | 在容器已經stop掉或Docker stoped/restarted的時候才重啟容器 |
舉個例子:下面的命令啟動一個Redis容器,當Redis容器停止后或者Docker被重啟時,Redis容器都會重啟。
$ docker run -dit --restart unless-stopped redis
Restart policy細節
使用restart policies時需要注意如下細節:
(1) 容器只有在成功啟動后restart policy才能生效。這里的"成功啟動"是指容器處于up至少10秒且已經處于docker監管。這是避免沒有成功啟動的容器陷入restart的死循環。
(2)如果手動(manually)的stop(與前面的explicitly stopped有何區別)一個容器,容器設置的restart policy將會被忽略,除非Docker daemon重啟或者容器手動重啟。這是避免了另外一種死循環。
(3)restart policies只能用于容器,對于swarm services其restart policies有不通過的配置。
進程監控
如果上面講的restart policies無法滿足需求,也可以采用進程監控的管理方案,如upstart,systemd或者supervisor等等。
這種方案中,進程監控服務運行在容器中。它可以監控一個進程是否運行,并可以在此進程沒有運行的時候去啟動該進程。而這發生的一切Docker都毫無知覺。
Docker不推薦此種方法來進行進程監控,理由很簡單,這種方法和系統平臺甚至linux發行版相關。
原文:https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager
Docker容器開機自動啟動
在使用docker run啟動容器時,使用--restart參數來設置:
# docker run -m 512m --memory-swap 1G -it -p 58080:8080 --restart=alway --name bvrfis --volumes-from logdata mytomcat:4.0 /root/run.sh
--restart具體參數值詳細信息:
還可以在使用on - failure策略時,指定Docker將嘗試重新啟動容器的最大次數。默認情況下,Docker將嘗試永遠重新啟動容器。
# sudo docker run --restart=on-failure:10 redis
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。