银河麒麟V10 SP1 aarch64安装Docker CE双源与依赖冲突解决
简介:面向在银河麒麟 V10 SP1 服务器版(含 aarch64 环境)上部署容器的运维与开发人员,这份手册针对系统官方源缺少 Docker 软件包、直接安装容易受阻的难题,给出可落地的源配置、安装顺序与排错参考。压缩包共 1 个 docx 文件,约 17KB,体积小巧,便于本地随时查阅。内容从 yum 源配置讲起,说明如何引入阿里 Docker CE 源和麒麟官方依赖源,再按依赖顺序完成 docker-ce-cli、docker-ce 18.09.7 的安装、服务启动与版本检查,并单独记录无法通过 yum 安装最新版 Docker 时的典型依赖报错、现象与原因分析。文档结构清晰,按配置、安装、验证和注意事项组织,可快速定位关键命令与报错信息。已有 7220 人学习下载,适合需要快速在银河麒麟服务器上跑通 Docker、减少依赖冲突反复试错的中高级运维与信创环境实施人员参考。
1. 银河麒麟 V10 SP1 装 Docker:先放弃“装最新版”,再谈安装
一台 aarch64 架构的银河麒麟 V10 SP1 Server 摆到面前,交付要求容器化跑服务,人坐下来第一件事就是yum install docker-ce。十几秒后终端甩回来一句nothing provides container-selinux >= 2:2.74 needed by docker-ce-3:20.10.17-3.el7.aarch64,底下还贴心地建议加--skip-broken或--nobest。网络没问题,源也没写错,问题出在依赖供给:上游把 container-selinux 的门槛抬到了 2.74,而麒麟这边能给出的还是 2.73 那一档。
这条路上能确定落地的版本是docker-ce-18.09.7-3.el7,不是 20.10,也不是 19.03。整套动作分四步走:docker-ce 源和麒麟本地源各配一处,元数据清干净重建,先 cli 后主包按精确版本号装,最后启动并做三项校验。适合两类人看——第一次在麒麟 aarch64 上落容器的交付工程师,以及已经装过但卡在依赖解析、版本被悄悄替换、服务起不来这几处的熟手。
注意:不要按报错提示加
--skip-broken硬装。跳过依赖检查装上去的 20.10,systemd 拉起 docker.service 时照样会因为 SELinux 上下文对不上挂掉,等于把安装期的问题拖成运行期的问题。
2. 双源配置:docker-ce 源供主包,麒麟源补依赖
装 Docker 这件事在麒麟上不是“一条命令”的量级,第一步得先把包从哪儿来这件事想清楚。整个安装过程能不能成,八成取决于两个 repo 文件写得对不对:一个负责把 docker-ce 系的二进制拉进来,另一个负责兜住这些二进制运行时所依赖的系统级组件。两个源缺一个,yum 都会在依赖解析阶段把事务整体回滚,报出来的错还往往指向别的地方,让人白绕一大圈。
2.1 为什么麒麟自带源里搜不到 docker server 包
银河麒麟 V10 SP1 Server 的官方仓库里能搜到 podman、buildah、skopeo 这一套,但yum search docker-ce是搜不出东西的。原因不是源写错了,是 Docker 从 18.09 之后就没有再以“发行版官方仓库包”的身份进入国产发行版的分发链路,上游只为 CentOS/RHEL 7 出 aarch64 的构建,麒麟的仓库里自然只维护自家那套容器工具。
所以路径只有一条:引入一个承载 docker-ce 的第三方 yum 源。麒麟 V10 的 glibc、rpm、内核 ABI 跟 el7 系列保持兼容,docker-ce 的 el7 构建能在这台机器上落地,但这是“能装”,不等同于“官方支持”。把这个前提立住,后面对版本卡得这么死就不会觉得意外了——你是在用一个兼容层跑别人的包,能选的版本集合本来就不是全集。
选型上还有一个岔路:走源码编译或者拿静态二进制。对交付场景我一般不推荐,静态二进制没有 systemd unit、没有 yum 的依赖追踪、升级和回滚全靠手工记,装一次两次没问题,机器一多就是灾难。yum 这条路虽然有版本天花板,但至少有包管理和可复现性。
2.2 写 docker-ce.repo:$basearch到底解析成什么
仓库文件的落点是/etc/yum.repos.d/docker-ce.repo。注意这个目录名是yum.repos后面加个d,不是yum.repos。手册原文里有一处写成了/etc/yum.repos./kylin_aarch64.repo,照着打字会创建出一个 yum 根本不读的目录,配完一脸茫然。
# 改动前留个后悔药,出问题能整目录回滚 cp -a /etc/yum.repos.d /etc/yum.repos.d.bak.$(date +%F) # 确认架构,$basearch 最终就靠它解析 uname -muname -m在麒麟 aarch64 上输出aarch64,在 x86_64 机器上是x86_64。yum 解析 baseurl 时会把$basearch替换成这个值,替换关系也可以显式写在/etc/yum/vars/basearch文件里,但一般不用动它。
cat > /etc/yum.repos.d/docker-ce.repo <<'EOF' [docker-ce-stable] name=Docker CE Stable - 7 # MIRROR_HOST 换成你环境里可达的 docker-ce 镜像域名 # 路径段 /docker-ce/linux/centos/7/$basearch/stable 是固定结构,整段不要改 baseurl=https://MIRROR_HOST/docker-ce/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://MIRROR_HOST/docker-ce/linux/centos/gpg EOF这里有两个容易翻车的点。<<'EOF'里的单引号不能省——带了单引号,heredoc 内容才会原样写入,$basearch留到 yum 解析时再展开;写成<<EOF的话,当前 shell 会先把$basearch展开成空字符串,写进文件的 baseurl 断了一截,后面 makecache 一路 404。第二点是路径里的centos/7,这指的是包的 ABI 目标而不是要求你的系统必须叫 CentOS 7,麒麟 V10 的 aarch64 机器读这个路径是正确的。
参数逐条过一遍。name只是给人看的标签,随便写;baseurl必须指向一个含 repodata 目录的地址,判断标准是curl -I <baseurl>/repodata/repomd.xml能返回 200;enabled=1表示默认参与解析;gpgcheck=1打开签名校验,gpgkey给的是公钥地址,第一次执行 yum 时会自动下载并导入 rpm 数据库。如果目标机 CA 证书太老、拉公钥时 TLS 握手失败,第 4 章有单独的处理办法。
2.3 kylin_aarch64.repo 的角色:依赖包的后路
docker-ce 主包不是孤立的,它依赖 docker-ce-cli、containerd.io、libcgroup、libseccomp 一长串东西,其中一部分镜像站的 docker-ce 仓库里带着,另一部分得回系统自己的源里找。麒麟官方源这一份配置干的就是这个活。
cat > /etc/yum.repos.d/kylin_aarch64.repo <<'EOF' [ks10-os-media] name = Kylin Linux Advanced Server 10 - Os baseurl = http://archive.kylinos.cn/yum/v10/sp1-openstack-q/aarch64/os/ gpgcheck = 0 enabled = 1 EOFbaseurl指向 v10/sp1 这条发布线的 aarch64 目录,末尾带不带斜杠都行,带上更稳。gpgcheck = 0是手册给的写法,含义是不校验这个源的签名,原因是麒麟的源公钥未必在每台交付机上都能拿到。能拿到公钥的环境,把 gpgcheck 改成 1 再补一行 gpgkey 是更好的做法,等于多一道防篡改。enabled = 1让这个源默认参与解析。
文件名叫什么其实无所谓,麒麟本身也可能已经预置了一份指向内网镜像的仓库文件。装之前先ls /etc/yum.repos.d/看一眼,重复的源会让同一个包在两个仓库里报不同版本,yum 的元数据缓存反复失效,报错还特别没头绪。
2.4 生效验证:三条自检一次过
配置写完不验证,后面安装报错时分不清是源没生效还是包名写错。按顺序走三步。
# 第一步:清缓存重建,让新写的仓库文件生效 yum clean all yum makecache # 第二步:确认两个仓库都被识别,没有一方被 disabled yum repolist -v 2>/dev/null | grep -E "docker-ce-stable|ks10-os-media"yum clean all清的是 /var/cache/yum 下的元数据和包缓存,yum makecache重新从 baseurl 拉 repodata。这两步不做,yum 可能还在用几天前的仓库快照,表现就是配了新源却找不到包。
# <p> <a href="https://download.csdn.net/download/u013930899/86507251" style="color:#ec7500;font-size:14px;"> 本文还有配套的精品资源,点击获取 </a> <img alt="menu-r.4af5f7ec.gif" src="https://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif" style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;"> </p>