如何確保docker服務在containerd升級後啟動?

如何確保docker服務在containerd升級後啟動?

今天早上,我醒來時收到了一封來自看門狗的「服務中斷」電子郵件。連接到伺服器後,我發現docker服務已關閉。經過一番調查,我發現今天早上Ubuntu對containerd服務進行了無人值守升級,升級後docker服務沒有自動啟動。

如何確保升級後不會再次發生這種情況?

答案1

我們有同樣的問題。我選擇使用 systemd 單元檔案在 containerd 和 dockerd 之間建立鬆散依賴關係。

就是這樣:

作為根用戶:

製作覆蓋目錄(權限755)

mkdir /etc/systemd/system/containerd.service.d/

在上述目錄中建立覆蓋檔案(權限644)

vi override.conf

將以下內容新增至文件中

[Unit]
Before=docker.service
Wants=docker.service

重新啟動 systemd 守護程式

systemctl daemon-reload

檢查是否有效

停止containerd

systemctl stop containerd

檢查 dockerd 是否已停止

systemctl status docker

啟動containerd

systemctl start containerd

檢查 dockerd 是否已啟動

systemctl status docker

++++++++++++++++++++++++++++

有關該主題的其他文件的一些鏈接

https://www.shellhacks.com/systemd-service-file-example/

https://man7.org/linux/man-pages/man5/systemd.service.5.html

答案2

我將 Docker 及其相關套件設定為保留,以便它們僅在計劃升級時進行升級。

sudo apt-mark hold docker containerd

當我想升級 Docker 時,我運行apt-mark unhold,升級軟體包,然後再次保存它們。我有一個 Ansible 劇本來自動化這個過程。我的安裝和設定 Docker 手冊將軟體包設定為在安裝後直接儲存。

答案3

文件docker 重新啟動策略很有幫助,請使用適合您使用的always或選項來啟動容器。unless-stopped

阻止 Ubuntu 進行無人值守升級似乎也是合理的。

相關內容