关于rpm安装docker遇到的一些问题及处理【中标麒麟】
今日给研发部门的同事在国产的中标麒麟7.4的操作系统上安装docker环境,因其环境特殊,无法使用互联网repo源,只让用rpm包来进行安装,因为也是第一次使用rpm包来进行docker的安装,所以这里留个记录
1、下载docker及安装所需的依赖包(因为中标的源下载的时候过慢,且有部分包不存在,这里我是在centos7上直接配置阿里yum源来进行的下载)
#仅下载安装包而不进行安装,将下载目录指定为/root/softyum install --downloadonly --downloaddir=/root/soft docker
#yum源中的docker版本较旧,故从官网下载最新的稳定版,并将通过yum下载的docker安装包和dockerclient删掉
https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/
docker-ce-18.09.6-3.el7.x86_64.rpm 、containerd.io-1.2.5-3.1.el7.x86_64.rpm 、docker-ce-cli-18.09.6-3.el7.x86_64.rpm
2、rpm安装docker所需的依赖包
atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64.rpm oci-register-machine-0-6.git2b44233.el7.x86_64.rpm
containerd.io-1.2.0-3.el7.x86_64.rpm
oci-systemd-hook-0.1.18-3.git8787307.el7_6.x86_64.rpm
containers-common-0.1.35-2.git404c5bd.el7.centos.x86_64.rpm oci-umount-2.3.4-2.git87f9237.el7.x86_64.rpm
container-selinux-2.95-2.el7_6.noarch.rpm policycoreutils-2.5-29.el7_6.1.x86_64.rpm
container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch.rpm policycoreutils-python-2.5-29.el7_6.1.x86_64.rpm
docker-ce-18.09.0-3.el7.x86_64.rpm python-backports-1.0-8.el7.x86_64.rpm
docker-ce-cli-18.09.0-3.el7.x86_64.rpm python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch.rpm
libselinux-2.5-14.1.el7.x86_64.rpm python-pytoml-0.1.14-1.git7dea353.el7.noarch.rpm
libselinux-python-2.5-14.1.el7.x86_64.rpm python-setuptools-0.9.8-7.el7.noarch.rpm
libselinux-utils-2.5-14.1.el7.x86_64.rpm PyYAML-3.10-11.ns7.se.1.x86_64.rpm
libsemanage-2.5-14.el7.x86_64.rpm selinux-policy-3.13.1-229.el7_6.12.noarch.rpm
libsemanage-python-2.5-14.el7.x86_64.rpm selinux-policy-targeted-3.13.1-229.el7_6.12.noarch.rpm
libsepol-2.5-10.el7.x86_64.rpm setools-libs-3.3.8-4.el7.x86_64.rpm
libyaml-0.1.4-11.ns7.se.1.x86_64.rpm subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64.rpm
3、解决依赖包以后使用rpm -ivUh --nodeps *.rpm 进行安装,这里不再赘述;
4、安装完成以后rpm -qa |grep docker 查询已经安装了docker 的rpm包,但是启动时抛错,无法启动,使用systemctl status docker -l ,查看完整的启动记录,发现以下错误:
5月 15 16:12:50 db1 dockerd-current[25067]: time="2019-05-15T16:12:50.371094918+08:00" level=warning msg="overlay2: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to enable d_type support. Running without d_type support will no longer be supported in Docker 1.16."
错误的原因是因为此xfs文件系统不支持d_type,解决办法是需要重新格式化系统使ftype=1,具体的d_type对docker的作用可以看如下内容:
Docker的overlay存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构。自从Docker1.12起,Docker也支持overlay2存储驱动,相比于overlay来说,overlay2在inode优化上更加高效。但overlay2驱动只兼容Linux kernel4.0以上的版本。
注:自从OverlayFS加入kernel主线后,它在kernel模块中的名称就被从overlayfs改为overlay了。
OverlayFS使用两个目录,把一个目录置放于另一个之上,并且对外提供单个统一的视角。这两个目录通常被称作层,这个分层的技术被称作union mount。术语上,下层的目录叫做lowerdir,上层的叫做upperdir。对外展示的统一视图称作merged。
下图展示了Docker镜像和Docker容器是如何分层的。镜像层就是lowerdir,容器层是upperdir。暴露在外的统一视图就是所谓的merged。
当Docker 运行在overlay/overlay2存储驱动上时,需要d_type特性的支持才能正常工作,Docker1.13以后加入了对此的检查,可以运行docker info命令来查看文件系统是否支持d_type这个特性。
具体可以参考:https://www.sudops.com/docker-xfs-filesystem-without-d_type-support.html
5、查看当前文件系统是否支持d_type
6、修改操作系统的ftype值为1
备份数据 ; 卸载文件系统、重建系统格式; 重新挂载,恢复数据;umount /dev/mapper/nlas-root
mkfs.xfs -n ftype=1 /dev/mapper/nlas-root
mount /dev/mapper/nlas-root
xfs_info /
7、重新启动docker即可
以上是 关于rpm安装docker遇到的一些问题及处理【中标麒麟】 的全部内容, 来源链接: utcz.com/z/516264.html