按照官方的步骤尝试在CentOS8里面安装Docker-ce(https://docs.docker.com/install/linux/docker-ce/centos/),会报下面的错误:
错误:
问题: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3,
but none of the providers can be installed
- cannot install the best candidate for the job
- package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
- package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
- package containerd.io-1.2.2-3.el7.x86_64 is excluded
- package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
(尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用最佳选择的软件包)
这是由于通过yum安装的containerd.io版本过低,这个时候你需要安装指定版本的containerd.io来解决这个问题,但是通过yum直接安装,又无法安装更高版本的containerd.io,只能先把高版本的下载下来,再进行安装。下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/,下载下来之后,通过下面的命令安装:
yum install /home/containerd.io-1.2.12-3.1.el7.x86_64.rpm
我把rpm文件放到了home目录下,所以这个命令是这样的。
安装了高版本的containerd.io之后,就可以正常安装最新版本的docker-ce了。
如果还报错,就把三个文件docker-ce,docker-ce-cli,containerd.io都手动下载下来,然后通过yum手动安装。
另外我在安装中还遇到一个事务检查错误的问题:
方法是把冲突的包删除掉。比如我这边提示的冲突是:
file /usr/share/man/man1/docker-attach.1.gz
from install of docker-ce-cli-1:19.03.8-3.el7.x86_64
conflicts with file from package
podman-manpages-1.4.2-5.module_el8.1.0+237+63e26edc.noarch
执行命令:
rpm -e podman-manpages-1.4.2-5.module_el8.1.0+237+63e26edc.noarch
删除成功后,再安装就可以了。如果提示被其他的包需要,则先把依赖它的包删除掉。