如何設置docker容器的自動重啟? restart策略有哪些?

docker容器默認不會自動重啟,但可通過設置restart策略實現自愈。常用的策略包括no(默認不重啟)、on-failure(出錯時重啟并可設最大重試次數)、always(無論原因都重啟)和unless-stopped(類似always但不受守護進程重啟影響)。設置方法有兩種:1.運行容器時使用–restart參數,如docker run -d –restart always my-image;2.在docker-compose.yml中配置restart屬性。使用時需注意避免因依賴服務未就緒導致的重啟死循環,并合理選擇策略以適應不同場景。

如何設置docker容器的自動重啟? restart策略有哪些?

Docker 容器默認不會在宿主機重啟或自身異常退出后自動恢復。但你可以通過設置 restart 策略,讓容器具備一定的“自愈”能力。這個功能其實很簡單,但用對了能省不少心。


一、什么是 restart 策略?

restart 策略是 Docker 提供的一個選項,用于控制容器在退出時是否自動重啟。它不是“永遠運行”,而是根據設定的條件來決定要不要重新啟動容器。

比如你跑一個 web 服務,如果程序崩潰退出了,默認是不會重啟的。但如果你設置了 –restart=always,那不管因為什么原因退出,Docker 都會嘗試把它拉起來。


二、常用的 restart 策略有哪些?

Docker 支持以下幾種常見的 restart 策略:

  • no:默認值,不自動重啟。
  • on-failure[:max-retries]:只有在容器退出狀態碼非0(出錯)時才重啟,可以加個最大重試次數。
  • always:只要容器停止,不管是不是正常退出,都會重啟。
  • unless-stopped:和 always 類似,但它不會因為 Docker 守護進程重啟而自動重啟,除非手動停止過。

舉個例子:

docker run -d --restart unless-stopped my-web-app

這條命令會讓容器一直保持運行狀態,即使服務器重啟了,也會自動拉起。


三、怎么設置 restart 策略?

設置方式有兩種:創建容器時指定,或者在 compose 文件里寫好。

1. 使用命令行參數

在運行容器的時候加上 –restart 參數即可:

docker run -d --restart always my-image

2. 在 docker-compose.yml 中配置

如果是用 docker-compose,可以在服務定義里加一行:

services:   web:     image: my-web     restart: unless-stopped

這樣管理多個容器的時候更方便,也更容易維護。


四、使用中要注意什么?

雖然 restart 很實用,但也不是隨便亂設。

  • 如果你的容器依賴外部服務(比如數據庫),頻繁重啟可能會導致死循環,卡在不斷重啟的狀態。

  • on-failure 可以加重試次數限制,避免無限重啟。例如:

    docker run -d --restart on-failure:5 my-image

    表示最多嘗試重啟 5 次,失敗就放棄。

  • 如果你不希望容器隨著系統重啟自動拉起,那就別用 always 或 unless-stopped。


基本上就這些。設置容器的自動重啟不算復雜,但在生產環境使用時要結合實際情況考慮清楚策略的選擇。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享