如何設定Docker容器重啟策略? 運維錄

2022-09-23 02:06:07 字數 1102 閱讀 3006

開始之前

宿主機可能會因某些原因(如宕機)重新啟動,預設情況下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...