主頁 > 知識庫 > Docker容器自啟動的實現(xiàn)方法

Docker容器自啟動的實現(xiàn)方法

熱門標簽:智能手機 阿里云 美圖手機 百度競價點擊價格的計算公式 硅谷的囚徒呼叫中心 使用U盤裝系統(tǒng) 網(wǎng)站建設 檢查注冊表項

容器自啟動

Docker提供了restart policy機制,可以在容器退出或者Docker重啟時控制容器能夠自啟動。這種Restart policy可以保證相關容器按照正確順序啟動。雖然也可以通過進程監(jiān)控的方式(如systemd)來完成這種動作,但Docker還是建議盡量避免使用進程監(jiān)控的方式來 "自啟動" 容器。

Docker的 Restart policy與dockerd命令的--live-restore啟動標志還有區(qū)別:--live-restore標志可以在Docker升級的時候保證容器繼續(xù)運行,但是網(wǎng)絡以及用戶終端輸入會被中斷。

那到底什么是restart policy呢?我們來看看實際的情況吧。

使用restart policy

restart policy在使用docker run啟動容器時通過--restart標志指定,這個標志有多個value可選,不同的value有不同的行為,如下表所列:

Flag Description
no 不自動重啟容器. (默認value)
on-failure  容器發(fā)生error而退出(容器退出狀態(tài)不為0)重啟容器
unless-stopped  在容器已經(jīng)stop掉或Docker stoped/restarted的時候才重啟容器
always  在容器已經(jīng)stop掉或Docker stoped/restarted的時候才重啟容器

舉個例子:下面的命令啟動一個Redis容器,當Redis容器停止后或者Docker被重啟時,Redis容器都會重啟。

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

Restart policy細節(jié)

使用restart policies時需要注意如下細節(jié):

(1) 容器只有在成功啟動后restart policy才能生效。這里的"成功啟動"是指容器處于up至少10秒且已經(jīng)處于docker監(jiān)管。這是避免沒有成功啟動的容器陷入restart的死循環(huán)。

(2)如果手動(manually)的stop(與前面的explicitly stopped有何區(qū)別)一個容器,容器設置的restart policy將會被忽略,除非Docker daemon重啟或者容器手動重啟。這是避免了另外一種死循環(huán)。

(3)restart policies只能用于容器,對于swarm services其restart policies有不通過的配置。

 進程監(jiān)控

如果上面講的restart policies無法滿足需求,也可以采用進程監(jiān)控的管理方案,如upstart,systemd或者supervisor等等。

這種方案中,進程監(jiān)控服務運行在容器中。它可以監(jiān)控一個進程是否運行,并可以在此進程沒有運行的時候去啟動該進程。而這發(fā)生的一切Docker都毫無知覺。

Docker不推薦此種方法來進行進程監(jiān)控,理由很簡單,這種方法和系統(tǒng)平臺甚至linux發(fā)行版相關。

原文:https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-process-manager

Docker容器開機自動啟動

在使用docker run啟動容器時,使用--restart參數(shù)來設置:

# 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具體參數(shù)值詳細信息:

  • no -  容器退出時,不重啟容器;
  • on-failure - 只有在非0狀態(tài)退出時才從新啟動容器;
  • always - 無論退出狀態(tài)是如何,都重啟容器;

還可以在使用on - failure策略時,指定Docker將嘗試重新啟動容器的最大次數(shù)。默認情況下,Docker將嘗試永遠重新啟動容器。

# sudo docker run --restart=on-failure:10 redis

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:湘潭 通遼 賀州 湖北 山南 黃山 懷化 煙臺

巨人網(wǎng)絡通訊聲明:本文標題《Docker容器自啟動的實現(xiàn)方法》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266