
今天早上,我醒來時收到了一封來自看門狗的「服務中斷」電子郵件。連接到伺服器後,我發現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 進行無人值守升級似乎也是合理的。