Docker-ce 突然崩溃 - 无法重新安装,挂在 systemd 服务启用中

Docker-ce 突然崩溃 - 无法重新安装,挂在 systemd 服务启用中

我知道我的问题可能太笼统了,但请耐心听我说一会儿:

我使用 ubuntu 18.04 LTS,并已docker-ce安装(使用官方安装步骤中描述https://docs.docker.com/engine/install/ubuntu/) 在现代 ThinkPad 上。我的设置没什么特别的。

一两天前,当我尝试关闭机器时,系统挂起了。然后,当我尝试使用 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

然后重新启动,然后我终于可以成功运行清除命令: 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重新启动并重试,但到目前为止没有任何效果,安装时它仍然挂起。

答案1

我不确定您正在运行哪个内核版本,但我今天注意到了这个确切的问题,并且发现运行docker ps只会挂起计算机,并且像您一样,如果不终止进程并手动删除文件,我就无法卸载或重新安装(当尝试重新安装时,进度条甚至停止在 94% - 与您的屏幕截图完全一样)。

我发现所有服务器都出现了这个问题,它们运行的​​是内核5.3.0-52-通用(从linux-virtual-hwe-18.04包装中取出)。

通过安装内核为 4.15.0.100.90 的软件包降级内核linux-virtual并使用该内核重新启动后,docker 安装/卸载成功。

我也尝试安装内核 5.6.7https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.7/在同一台服务器上,成功重新安装了 docker。所以,我猜是内核出了问题。我的解决方案就是安装一个较旧或较新的内核。

相关内容