@[toc]
一. 问题重现
在centos7.9上安装docker,出现如下问题:
从报错中可以看到,缺少:
container-selinux ,fuse-overlayfs slirp4nets
只要把这三个包安装上即可
二. 解决过程
2.1 查看系统中有没有这三个包
[root@mufenggrow ~]# yum search container-selinux
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
警告:没有匹配 container-selinux 的软件包
No matches found
使用 search查看发现没有这个包。
解决方案:
增加官网源的可用存储库 extras,这些存储库提供了默认基本库和更新存储库中未包含的软件包
2.2 打开官网目录
官网软件包目录: http://mirror.centos.org/centos/7/extras/x86_64
可以看到在这个目录中有相关的Packages, 而我们一会就要使用这个Packages中的软件包,需要安装的包都在这里面。
在网页使用ctrl+F 查找:
可以查看到你想要的包
2.3 在docker-ce.repo中添加centos-extras源
vim /etc/yum.repos.d/docker-ce.repo
再文档最上面添加源
[centos-extras]
name=Centos extras - $basearch
enabled=1
gpgcheck=0
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
vim还不熟的小伙伴记住如下几个参数即可:
进入文档后要写内容: 按i
退出: 按两下esc ,再输入 :wq! 回车
2.4 尝试安装系统提示的三个包
安装:
yum install slirp4etns fuse-overlayfs container-selinux
这三个包安装好后,再去按照正常的流程安装docker,就不会再报错了。
三. 探究原因
docker官方文档的安装部分提到: centos-extras存储库需要处于开启状态。
官网的介绍如下图:
CentOS提供的其他存储库
CentOS Extras - 在CentOS 5和6中,为CentOS提供附加功能而不破坏上游兼容性或更新基本组件的软件包,但未经上游测试或上游产品中没有提供。在CentOS 7和8中,这是一个上游存储库,以及其他CentOS软件包。CentOS开发团队已经测试了该存储库中的每个项目,并且它们都与CentOS一起使用。该存储库随CentOS一起提供,并且默认开启
可能都原因:
- 在安装docker的时候,把系统中官方默认的repo包移走了导致缺包
- 操作系统版本比较低导致缺包