如何讓 Docker 容器在停止回應時自動重新啟動

最後更新: 2026年02月07日

  • 使用 Docker 的原生重新啟動策略來處理系統故障。
  • 對處於不健康狀態的容器實施自訂腳本和定時任務。
  • 與 systemd 進行高級集成,以控制啟動和關閉順序。
  • 外部監控替代方案和工具,例如 Podman Quadlet。
如何讓 Docker 容器在停止回應時自動重新啟動

我相信你肯定遇到過這種情況:你有一個服務正在運行… Docker 不知何故,它每隔幾天就會卡住一次。 Docker容器停止回應時如何自動重新啟動? 嘗試優化程式碼或設定卻毫無效果,最後發現只需手動重啟一下就能解決問題,而且還能讓一切再運行一周,這確實令人沮喪。與其不斷查看時間,理想的解決方案是建立一個系統來幫助你完成這些繁瑣的工作。

管理容器可用性不僅僅是確保它們在伺服器開機時自動啟動。 確保他們做出正確回應 對於這些請求,有時容器對 Docker 來說似乎“處於活動狀態”,但其中的應用程式卻無響應,這迫使我們尋找各種解決方案,從基本的守護程序參數到在作業系統中創建複雜的服務。

Docker 原生重啟策略

自動重新啟動 Docker 容器的最簡單方法是使用標誌。 --restart 啟動容器或使用指令時 docker update 如果容器已經創建,Docker 會根據您的需求提供多種選項。例如,策略 總是 這將導致容器始終重新啟動,無論該進程是否以錯誤結束,或者是否是 Docker 守護程式本身重新啟動。

獨家內容 - 點擊這裡  如何在Google翻譯中翻譯文字?

如果您喜歡外科手術式的治療, 除非停止 這是許多人的首選。此配置與先前的配置相同,差異在於如果您手動停止容器進行維護, Docker 不會嘗試啟用它。 伺服器重啟後自動執行,尊重您的手動選擇。

對於那些只想在出現重大失誤後才採取行動的人來說, 失敗時此策略僅在容器以非零退出程式碼終止時才會觸發重新啟動。您還可以透過設定最大重試次數來限制重啟次數,從而防止系統在錯誤持續且嚴重時陷入無限重啟循環。

如何讓 Docker 容器在停止回應時自動重新啟動
如何讓 Docker 容器在停止回應時自動重新啟動

針對「不健康」容器的自動化

事情變得有趣起來了。有時,容器仍然顯示為「運行中」(開啟),但其健康狀況卻並非如此。 不良 因為它未能通過內部審核。先前的政策在這裡無效,因為該流程在技術上並未失效。為了解決這個問題,我們可以實施該指令。 健康檢查 在 Dockerfile 或 Docker Compose 檔案中,定義一個指令(例如 curl 發送到特定連接埠)以驗證應用程式是否回應。

一旦我們設定好健康檢查,我們就可以創建一個 Bash腳本 它每隔幾分鐘運行一次,使用 crontab 來自 Linux 系統。此腳本應過濾掉處於以下狀態的容器: unhealthy 或那些以錯誤代碼 128 退出並運行 docker restart 關於他們。

獨家內容 - 點擊這裡  如何在沒有光碟的情況下安裝印表機

為了使此功能順利運行並自動重新啟動 Docker 容器,執行 cron 作業的使用者必須擁有必要的權限。 docker 群組所需的權限這樣,該系統每隔 5 或 10 分鐘監控一次環境,並啟動任何變成「殭屍」的服務,從而保證幾乎完全的可用性,而無需人工幹預。

Windows 10 中的 Docker
相關文章:
如何在 Windows 10 上安裝 Docker

與 systemd 的高級集成

在更專業的環境中工作時,您可能希望容器的行為類似於 原生 Linux 服務整合 Docker Systemd 可讓您管理複雜的依賴關係,例如確保資料庫在 Web 應用程式啟動之前啟動。這是透過建立文件來實現的。 .service 在路線上 /etc/systemd/system/.

我們可以設計一個 關機和開機順序 受控的。透過使用連結到 systemd 的自訂腳本,可以按照依賴項的逆序停止容器,以防止資料損壞。使用類型 oneshot 並進行配置 targets 合適的(例如) multi-user.target o shutdown.target伺服器負責處理容器的整個生命週期。

另一個強大的方法是在 Docker 容器停止回應時自動重新啟動它的選項是使用標誌。 --rm 結合 systemd,這樣可以在停止運行時刪除容器,並在啟動時從基礎鏡像建立一個新容器,從而確保… 容器的狀態必須隨時保持清潔且未變更。將資料持久性完全委託給外部磁碟區。

獨家內容 - 點擊這裡  我無法卸載程式
將 Docker Desktop 與 WSL 結合使用
如何讓 Docker 容器在停止回應時自動重新啟動

外部工具和現代替代方案

如果你不想費力寫 Bash 腳本,可以使用第三方工具。還有一些開源應用程式專門用於根據容器狀態重新啟動容器。 既定時間表這對於諸如續訂 SSL 憑證之類的重複性任務非常有用。同樣,諸如以下工具也很有用: Uptime Kuma 它們允許您透過視覺化儀表板監控服務運行狀況,並在出現問題時向 Telegram 或 Gotify 發送通知。它們對於在 Docker 容器停止回應時自動重新啟動容器都非常有用。

對於那些尋求更輕或更本土化替代品的人來說, Podman 這是一個絕佳的選擇。這得歸功於其無守護程式架構和功能… 四元組它允許您建立簡單的聲明式文件,systemd 會自動將其轉換為最佳化的服務,從而提供比傳統 Docker 更自然的整合。

全面掌控服務的生命週期需要結合以下方法: 重啟策略透過持續監控 健康檢查 在更複雜的情況下,還需要支持 systemd 或監控工具 這樣一來,您的基礎設施就非常強大,無需依賴有人每週手動重新啟動伺服器。