Ubuntu 20.04 上的 docker-ce 安装后配置失败

Ubuntu 20.04 上的 docker-ce 安装后配置失败

我将 Ubuntu 从 18.04 升级到了 20.04。我无法运行所有 docker 容器。尝试卸载 docker 并通过链接重新安装比如这个。使用 apt 时,安装在 docker 的配置上冻结。安装无法启动 docker。

最终,它似乎归结为配置问题。

 user@user-pc:~$ sudo dpkg --configure -a
 Setting up docker-ce (5:20.10.1~3-0~ubuntu-focal) ... 
 /bin/sh: 0: Illegal option -w
 dpkg: error processing package docker-ce (--configure):
 installed docker-ce package post-installation script subprocess returned error exit status-2
 dpkg: dependency problems prevent configuration of docker-ce-rootless-extras:
 docker-ce-rootless-extras depends on docker-ce; however:
 Package docker-ce is not configured yet.

 dpkg: error processing package docker-ce-rootless-extras (--configure):
 dependency problems - leaving unconfigured
 Processing triggers for man-db (2.9.1-1) ...
 Errors were encountered while processing:
 docker-ce
 docker-ce-rootless-extras

docker 状态

sudo service docker status

显示 docker 处于活动状态,但任何 docker 命令都永远挂起。docker-compose命令也超时。

docker-compose logs -f 
...
...
docker.errors.DockerException: Error while fetching server API version: UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

我很困惑,一直在尝试解决这个问题,已经三天了。

答案1

安装 docker 时是否有 VPN 在后台运行?

显然,隧道化你的网络[while installing docker leads to problems][1]。这也发生在我身上。通过关闭 openvpn

sudo 服务 openvpn 停止

并且docker安装得很漂亮。

答案2

我遇到了类似的问题。Ubuntu 从 18.04.4 升级到 20.04.2 后,docker 无法启动,尝试安装、删除、清除、修复时出错。(VPN 不在我的控制范围内)。

$ sudo apt-get purge -y docker-ce
...
1 not fully installed or removed.
...
Removing docker-ce (5:20.10.4~3-0~ubuntu-bionic) ...
Job for docker.service canceled.
invoke-rc.d: initscript docker, action "stop" failed.
dpkg: error processing package docker-ce (--remove):
 installed docker-ce package pre-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
dpkg: error while cleaning up:
 installed docker-ce package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 docker-ce
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)

我安装了 Debian/Ubuntu 的 docker.io 和 docker.com 的 docker-ce。这邮政讨论了差异。

dpkg -l | grep -i docker

看起来它被卡住了,containerd无法启动。您可以在/var/log/syslog

删除文件夹、卸载所有 docker 包并重新安装 docker.io 即可。

注意:我不关心以前的图像或容器,如果你关心那么这可能不适合你。

$ sudo rm -rf /var/lib/containerd/
$ sudo rm -rf /var/lib/docker/
$ sudo apt-get purge -y docker-ce docker-ce-cli docker.io containerd.io
$ sudo apt-get install docker.io

答案3

更新 {“storage-driver”:“devicemapper”}

在 daemon.json 中重新启动 docker 服务解决了这个问题。

nano /etc/docker/daemon.json
#Add 
{ "storage-driver": "devicemapper" }
#Save and exit

重新启动docker服务。

从问题链接中引用此内容https://github.com/moby/moby/issues/22685

答案4

就我而言,我安装了 Firewalld 而不是 ufw,后者是 Ubuntu 上的“默认”版本。

问题是,之前安装中的 docker0 接口被设置为“受信任”区域,因此 apt 无法创建具有该名称的新接口,从而无法完成安装过程。

我所做的是使用firewall-cmd工具删除该接口。

firewall-cmd --zone=trusted --remove-interface='docker0'

您可能需要 root 权限才能运行该命令。

之后我使用命令删除了接口

ip link delete docker0

然后我清除了包并再次尝试。

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

相关内容