docker自動啟動容器


Docker提供了重新啟動策略 來控制容器在退出時或Docker重新啟動時是否自動啟動。重新啟動策略可確保以正確的順序啟動鏈接的容器。Docker建議您使用重新啟動策略,並避免使用進程管理器來啟動容器。

重新啟動策略--live-restoredockerd 命令標志不同--live-restore盡管網絡和用戶輸入中斷,但使用允許您在Docker升級期間保持容器運行。

使用重啟策略

要為容器配置重新啟動策略,請--restart在使用該docker run命令時使用該標志--restart標志的值可以是以下任何一種:

描述
no 不要自動重啟容器。(默認)
on-failure 如果容器由於錯誤而退出,則重新啟動容器,該錯誤表現為非零退出代碼。
always 如果容器停止,請務必重啟容器。如果手動停止,則僅在Docker守護程序重新啟動或手動重新啟動容器本身時才重新啟動。(參見重啟政策詳情中列出的第二個項目
unless-stopped 類似於always,除了當容器停止(手動或其他方式)時,即使在Docker守護程序重新啟動后也不會重新啟動容器。

以下示例啟動Redis容器並將其配置為始終重新啟動,除非明確停止或重新啟動Docker。

$ docker run -dit --restart unless-stopped redis 

重啟政策詳情

使用重啟策略時請記住以下幾點:

  • 重啟策略僅在容器成功啟動后生效。在這種情況下,成功啟動意味着容器啟動至少10秒並且Docker已開始監視它。這可以防止根本不啟動的容器進入重啟循環。

  • 如果手動停止容器,則會忽略其重新啟動策略,直到Docker守護程序重新啟動或手動重新啟動容器。這是防止重啟循環的另一種嘗試。

  • 重新啟動策略僅適用於容器群組服務的重新啟動策略配置不同。請參閱與服務重新啟動相關的 標志

如果run時沒有添加restart 可以通過update命令追加

docker update --restart=always web

1、先后台啟動容器未加restart參數
2、docker ps 查看了當前運行的容器
3、重啟docker 服務
4、再次docker ps 查看當前運行的容器,發現容器並沒有運行
5、利用 update 設置 restart=always
6、重啟docker 服務
7、再次docker ps 查看當前運行的容器,此時發現已經自動啟動容器
---------------------


使用流程管理器

如果重新啟動策略不適合您的需要,例如當Docker之外的進程依賴Docker容器時,您可以使用流程管理器,例如 upstart, systemdsupervisor

警告:不要嘗試將Docker重新啟動策略與主機級進程管理器結合使用,因為這會產生沖突。

要使用進程管理器,請將其配置為使用您通常用於手動啟動容器的相同docker startdocker service命令來啟動容器或服務有關更多詳細信息,請參閱特定流程管理器的文檔。

在容器內使用進程管理器

進程管理器也可以在容器內運行,以檢查進程是否正在運行,如果沒有則啟動/重啟進程

 

官方介紹在此,以上內容引用官網內容 
https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM