Docker

Docker-ce 突然壞了 - 無法重新安裝,掛在 systemd 服務啟用

  • April 12, 2021

我知道我的問題可能過於籠統,但請稍等片刻:

我使用 ubuntu 18.04 LTS,並已在現代 thinkpad 上安裝(使用https://docs.docker.com/engine/install/ubuntu/docker-ce中描述的官方安裝過程)。我的設置沒什麼好看的。

一兩天前,我的系統在嘗試關閉我的機器時掛起。然後,當我嘗試使用 docker 時,守護程序沒有響應,只是掛了。systemd 單元已載入,但尚未啟動。我當時認為關機掛起是由於這個 docker 守護程序問題。

所以我嘗試從系統中清除並重新安裝 docker。 sudo apt-get purge docker-ce docker-ce-cli containerd.io 連這個命令都掛了。

所以我嘗試通過以下方式手動解鎖 dpkg:

sudo systemctl disable docker
pgrep -a apt
sudo kill -9 <apt process>
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

還刪除了所有 docker 和 containerd 相關文件 + 禁用和刪除了 systemd 單元:

sudo systemctl disable docker
sudo rm -rf /etc/docker
sudo rm -rf /run/containerd/containerd.sock
sudo rm -rf /usr/bin/dockerd
sudo rm -rf /lib/systemd/system/docker.service
sudo rm -rf /var/lib/docker-engine
sudo rm -rf /var/lib/docker
sudo rm -rf /var/run/docker/
sudo rm -rf /var/run/docker.pid
sudo rm -rf /var/run/docker.sock
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm -rf /var/lib/containerd
sudo rm -rf /opt/containerd
sudo systemctl daemon-reload

並重新啟動,然後我終於可以成功執行 purge 命令: sudo apt-get purge docker-ce docker-ce-cli containerd.io

然後,當我嘗試重新安裝 docker(再次使用官方文件方法,穩定通道)時,它在啟用 systemd 服務時掛起:

...
Preparing to unpack .../5-docker-ce_5%3a19.03.8~3-0~ubuntu-bionic_amd64.deb ...
Unpacking docker-ce (5:19.03.8~3-0~ubuntu-bionic) ...
Setting up aufs-tools (1:4.9+20170918-1ubuntu1) ...
Setting up containerd.io (1.2.13-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
Setting up cgroupfs-mount (1.4) ...
Setting up docker-ce-cli (5:19.03.8~3-0~ubuntu-bionic) ...
Setting up pigz (2.4-1) ...
Setting up docker-ce (5:19.03.8~3-0~ubuntu-bionic) ...
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.

我需要暫停(ctrl+z),然後如上所述再次清理所有內容。

這也是安裝卡住時 systemd 服務外觀的螢幕截圖:在此處輸入圖像描述

我也嘗試過apt clean和/或apt autoclean然後重新啟動並重試,但到目前為止沒有任何效果,安裝時它仍然掛起。

我不確定您正在執行什麼核心版本,但是我今天注意到了這個確切的問題,並註意到執行docker ps只是掛起電腦,並且像您一樣,我無法在不終止程序並手動刪除文件的情況下解除安裝或重新安裝(嘗試重新安裝時)進度條甚至停止在 94% - 與您的螢幕截圖完全相同)。

我發現在所有出現此問題的伺服器上,它們都執行核心5.3.0-52-generic(來自linux-virtual-hwe-18.04軟體包)。

linux-virtual通過使用核心 4.15.0.100.90安裝軟體包並使用該核心重新啟動來降級核心後, docker 安裝/解除安裝成功。

我還嘗試在同一台伺服器上從https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.7/安裝核心 5.6.7並成功重新安裝 docker。所以,我的猜測是它與核心有關。我的解決方案只是安裝一個較舊或較新的核心。

引用自:https://serverfault.com/questions/1015711