我正在尝试在我的 Ubuntu 18.04 上安装 Docker,但是出现了以下错误:
The following packages have unmet dependencies:
docker-ce : Depends: containerd.io (>= 1.2.2-3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
我该怎么做才能修复它?
答案1
您必须安装 containerd 包,这就是我解决问题的方法。
$ curl -O https://download.docker.com/linux/ubuntu/dists/bionic/pool/edge/amd64/containerd.io_1.2.2-3_amd64.deb
$ sudo apt install ./containerd.io_1.2.2-3_amd64.deb
答案2
sudo snap install docker
Ubuntu 18.04 对我有用。
以下链接不工作
答案3
在 Ubuntu 19.10 中,您可以通过安装软件包来安装 docker docker.io
,该软件包具有
containerd
和runc
作为依赖项。或者,您可以直接从 docker 存储库安装,docker-ce
如此docker-ce-cli
处所述 https://docs.docker.com/install/linux/docker-ce/ubuntu/。在此替代方法中,依赖项containerd
和runc
被单个依赖项替换containerd.io
。问题是,出于某种奇怪的原因,containerd.io
不在docker存储库中。因此您需要按照建议手动安装它https://askubuntu.com/a/1190896/456438。
请注意,containerd.io
在软件包本身中, 被认为是containerd
和的有效替代runc
。 反过来则不成立,但如果你修改软件包 docker-ce 并将 的依赖项替换为containerd.io
,containerd
它就可以正常工作:我按照https://fabianlee.org/2018/09/28/ubuntu-customizing-and-repacking-a-deb-file/更改包中的依赖项(无需 sudo):
cd $(mktemp -d -t docker-XXX)
apt download docker-ce
ar xf docker-ce_*.deb
mkdir DEBIAN
tar xf control.tar.xz -C DEBIAN
第一个命令仅创建一个临时目录并进入该目录。其余命令从 DEBIAN 子目录中的软件包中提取 5 个文件。我编辑了DEBIAN/control
要更改containerd.io
为的文件containerd
并保存了该文件。我继续按照说明重建软件包:
tar -C DEBIAN -cJf control.tar.xz .
ar rcs docker-ce.deb debian-binary control.tar.xz data.tar.xz
docker-ce.deb
这会在临时目录中创建一个新的 deb 文件。我按照这里的说明进行操作https://docs.docker.com/install/linux/docker-ce/ubuntu/但在sudo apt install ...
命令中我把 和 替换containerd.io
为containerd
。docker-ce
成功 ./docker-ce.deb
了!用 测试过docker run hello-world
。
答案4
github 上是否有针对此问题打开的 issuehttps://github.com/docker/for-linux/issues/832以及一些解决方法。目前还没有稳定的 Eoan 软件包。一些解决方法如下:
- 从 Ubuntu bionic 手动安装 containerd(并在需要时手动升级)
- 改用 bionic 存储库
- 使用测试或夜间存储库而不是稳定存储库。
snap 中有一个可用的版本但是太旧了(18.x),而 universe 存储库中有 docker.io 包(19.03,不是最新的,但比 snap 更新)。