開始之前
宿主機可能會因某些原因(如宕機)重新啟動,預設情況下docker容器是停止狀態的,這可能會對某些應用場景帶來不便,所以docker提供了--restart引數,在建立容器時設定此引數,docker守護程序將重新啟動容器。
舉個栗子
建立容器
docker run -d --name test \
--restart=unless-stopped \
-p 8080:8080 \
tomcat:alpine
列出容器docker ps --format '} } }'
a88aa63d67a9 up 1 minutes test
注意: 這裡ps子命令使用格式化輸出,特別是status列表示容器的狀態,更多資訊請檢視參考2。
模擬宕機
# 關閉vm電源,並重新開機。驗證容器是否啟動docker ps --format '} } }'
a88aa63d67a9 up 51 seconds test
命令幫助docker run --help | grep "restart"
--restart=no restart policy to apply when a container exits
restart 引數選項
no預設選項,不會重新啟動容器。
on-failure[:max-retries]
容器處於非零退出狀態時重新啟動容器,使用可選項則會限制重新啟動嘗試次數。
unless-stopped
無論容器退出狀態如何始終重新啟動容器,但如果容器之前已處於停止狀態,則在守護程式啟動時不會啟動它。
always
無論容器退出狀態如何,docker守護程序無限期地嘗試重新啟動容器。
小結最後來總結下文章中的知識點
沒有顯示指定restart引數建立的容器,docker將會使用預設值no,也就是不會重新啟動容器。
對於某些關鍵應用場景,建議首選 unless-stopped 或者 on-failure選項,好處是不會無限制地重啟容器。
always選項建議作為次選,因為當容器內部應用錯誤而停止(非零退出狀態),docker仍然不斷地嘗試重新啟動容器。
參考文章
Docker編寫指令碼實現應用容器重啟
docker編寫指令碼試下容器重啟 支援windows 和linux。echo 重啟docker容器 rtvsweb publish.docker restart rtvsweb publish if errorlevel 0 echo 執行成功 else echo 執行失敗 echo 按任意鍵結束...
Docker 容器內如何重啟其他容器
有的時候我們需要在docker容器內操作其他容器,比如做乙個容器專門做安裝公升級,公升級完需要重啟其他的容器。需要映象中安裝docker ce,如下圖,在映象中安裝docker ce from centos run curl o etc yum.repos.d docker ce.repo yum ...
Docker容器重啟後IP更改問題處理方法
docker容器重啟後ip更改問題處理方法 root ubuntu docker run it name cct3 link cct1 webtest cct root eb0cc6e0847f ping webtest ping webtest 192.168.100.29 56 84 bytes...