目录
1. 环境
CentOS Linux release 7.2.1511 (Core)
3.10.0-327.el7.x86_64
2. 问题排查
2.1 failed to start daemon: error initializing graphdriver: overlay2: the backing xfs filesystem
docker启动失败,查看报错信息 failed to start daemon: error initializing graphdriver: overlay2: the backing xfs filesystem… 。查看ftype=0,所以将daemon.json文件的storage-driver,storage-opts删除,之后重启docker
感谢:http://huiyunblog.com/pages/b6077f/#%E4%BA%A7%E7%94%9F%E7%9A%84%E9%97%AE%E9%A2%98
2.2 centos7.2内核bridge.ko问题
启动mysql容器,挂载3306端口,然后测试发现使用os层的IP地址始终无法连接到mysql,百度排查后发现是centos7.2内核bridge.ko问题,于是将默认docker0网卡重建后,测试成功
感谢:https://blog.csdn.net/yztezhl/article/details/123324060
2.3 kernel:unregister_netdevice: waiting for … to become free. Usage count = 1
内核线程的引用计数泄漏问题,详细信息可参见:https://help.aliyun.com/document_detail/416769.htm,机器的内核版本,建议使用>=4.18.*版本的内核。如果一定要使用3.10.0的内核,请确保该内核版本>=3.10.0-1160(仅针对Redhat/CentOS)。
2.4 离线安装依赖问题
-
因为要离线部署,所以已经在centos7.2同步了docker-ce所需的依赖,createrepo创建索引文件,搭建本地yum即可在离线环境使用(在mini安装系统环境,yum安装yum-utils后,执行 yumdownloader libseccomp policycoreutils-python container-selinux docker-ce docker-ce-cli containerd.io docker-compose-plugin --resolve --destdir /xxx,将所需全部依赖下载到本地)
-
测试在centos7.2离线安装没有任何问题,但是系统更换为redhat7.2,直接使用同步的离线的yum安装docker-ce一直报错systemd的问题,百度后按照大家的方式没有解决
-
没有其他报错信息,只有上面一条,redhat7.2安装后systemd为219-19,我同步的离线源的版本是219-78,如systemd-lib等依赖也一并同步了,正常yum判断版本变化(源内版本高于系统),会主动更新并更新依赖,但是并没有,之后想到rpm -U可以升级,所以测试发现了新报错
-
排查到 libcryptsetup.so.12安装cryptsetup-libs即可;查看之前同步的离线源,发现有该软件,就先单独安装,发现没有问题,之后再一次rpm -U systemd-xxxx,发现新问题
-
如图,缺少liblz4.so.1,查询后得知需要安装lz4软件,我同步的离线依赖中有,所以yum单独安装,安装成功
-
再次执行rpm -U systemd-xxxx,发现有system-dev的报错(图忘记保留了),查看测试环境没有使用到systemd-dev,所以直接remove掉了
-
继续执行rpm -U systemd-xxxx,发现了libgudev1的报错,然后yum安装
-
在安装libgudev1成功后,观察到yum输出信息,已经将systemd、systemd-python、systemd-lib、systemd-sysv都更新到了219-78的版本了;之后安装docker; yum install libseccomp policycoreutils-python container-selinux docker-ce docker-ce-cli containerd.io docker-compose-plugin -y ,成功安装,没有报错产生
-
正常同步好的yum源的rpm包,放置离线环境使用,yum安装时候会判断相关依赖版本差异,如果离线源有对应的包的话,会自动解决问题安装或更新依赖;该问题实际现象其实就是判断到需要更新systemd软件后,yum不会主动解决依赖安装问题,通过rpm -U,确认详细的报错依赖需求,先一个个的安装依赖,都成功后,就可以统一安装docker,yum主动处理其他依赖了