银河麒麟V10服务器部署Docker:从依赖炼狱到成功启动的实战踩坑记
1. 银河麒麟V10与Docker的孽缘初体验第一次在银河麒麟V10上安装Docker的经历简直就像一场噩梦。作为国产操作系统的代表银河麒麟V10基于CentOS进行了深度定制但这个定制带来的不是便利而是各种意想不到的兼容性问题。最让人头疼的就是包管理系统的改动——原本在CentOS中标识为el7的rpm包在这里被改成了ky10。这个看似微小的改动却让依赖关系变得一团糟。我记得当时尝试安装Docker时系统报错提示缺少依赖。按照常规思路我准备安装这些依赖包却发现它们要么版本不匹配要么根本找不到。更可怕的是如果强行卸载系统自带的包来满足依赖很可能会导致其他系统服务崩溃。这种进退两难的境地让我深刻体会到什么叫依赖地狱。2. 源配置的猫鼠游戏2.1 官方源的陷阱刚开始我天真地以为既然是基于CentOS7的系统直接使用CentOS7的源应该没问题。但现实给了我一记响亮的耳光。配置好CentOS7的源后yum makecache命令可以正常执行但一旦尝试yum update就会蹦出一大堆依赖错误。后来经过反复测试才发现银河麒麟V10虽然基于CentOS7但它的aarch64架构支持却需要CentOS8的源。这个发现让我哭笑不得——厂商说基于CentOS7结果却要用CentOS8的源才能正常工作。这就像买了个标称兼容Windows的软件结果只能在Linux上运行一样荒谬。不过吐槽归吐槽问题还是要解决。我最终采用了混合源的方式基础系统包用CentOS8的源而Docker相关组件则使用官方Docker源。2.2 变量替换的玄机在配置yum源时还有一个隐藏的坑等着我。银河麒麟V10把$releasever变量的值改成了10而我们需要的是7对应CentOS7的源。如果不做修改所有仓库地址都会返回404错误。解决方法很简单但很容易被忽略sudo sed -i s/$releasever/7/g /etc/yum.repos.d/CentOS-7.repo sudo sed -i s/$releasever/7/g /etc/yum.repos.d/docker-ce.repo这两行命令看似简单却能解决90%的源配置问题。记得执行后一定要运行yum makecache更新缓存否则修改不会生效。3. Python环境的地雷阵3.1 版本冲突引发的血案当我以为终于可以顺利安装Docker时系统又抛出一个致命错误ImportError: No module named yum这个报错看似简单实则暗藏杀机。经过排查发现银河麒麟V10默认安装了多个Python版本2.6、2.7等而yum是用Python2.6编写的。但当系统默认Python指向2.7时就会导致yum无法正常运行。查看Python版本指向的方法很简单whereis python ll /usr/bin/ | grep python3.2 精准定位问题根源通过查看yum和yum-config-manager的源码我找到了问题的关键cat /usr/bin/yum输出显示yum明确要求Python2.6环境。而当前系统的Python软链接却指向了2.7版本。这种情况下有两种解决方案修改系统默认Python版本修改yum-config-manager的Python解释器路径我选择了第二种方案因为改动范围更小风险更低vi /usr/bin/yum-config-manager将第一行的#!/usr/bin/python改为#!/usr/bin/python2.6保存后再次运行yum命令就正常了。4. Docker安装的终极一战4.1 清理历史包袱在正式安装前必须先清理可能存在的旧版本Dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine这个步骤很重要特别是如果你之前尝试过安装但失败了。残留的配置文件可能会导致新安装的Docker出现各种奇怪问题。4.2 安装核心组件终于到了最激动人心的时刻——安装Docker本体sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装过程中可能会提示一些依赖关系按照提示安装即可。如果遇到之前解决过的Python环境问题记得检查yum-config-manager的Python路径设置。4.3 配置与优化安装完成后别忘了进行必要的配置。首先是daemon.json文件{ registry-mirrors: [ https://pee6w651.mirror.aliyuncs.com, https://registry.docker-cn.com, http://hub-mirror.c.163.com, https://docker.mirrors.ustc.edu.cn ], data-root: /data/docker, log-driver: json-file, log-opts: { max-size: 200m, max-file: 3 } }这个配置做了几件事设置了国内镜像源加速拉取指定了Docker数据存储路径配置了日志轮转策略配置完成后需要重新加载并启动服务sudo systemctl daemon-reload sudo systemctl start docker最后用docker ps命令验证安装是否成功。如果看到空列表而不是错误信息那么恭喜你这场与银河麒麟V10的Docker安装大战你终于赢了