关于rpm安装docker遇到的一些问题及处理【中标麒麟】

编程

今日给研发部门的同事在国产的中标麒麟7.4的操作系统上安装docker环境,因其环境特殊,无法使用互联网repo源,只让用rpm包来进行安装,因为也是第一次使用rpm包来进行docker的安装,所以这里留个记录

  1、下载docker及安装所需的依赖包(因为中标的源下载的时候过慢,且有部分包不存在,这里我是在centos7上直接配置阿里yum源来进行的下载)

#仅下载安装包而不进行安装,将下载目录指定为/root/soft

yum 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

回到顶部