保姆级教程:用yum downloadonly为银河麒麟V10 ARM系统制作Docker离线安装包
银河麒麟V10 ARM64系统离线部署Docker全攻略:从制作到验证的完整闭环
在国产化替代浪潮中,银河麒麟操作系统凭借其安全可靠的特性,已成为关键基础设施领域的主流选择。而作为容器化技术的核心引擎,Docker的离线部署能力对于金融、军工等隔离网络环境尤为重要。本文将手把手带您完成从零构建ARM架构离线安装包的全过程,不仅涵盖基础命令操作,更深入解析版本适配原理与部署验证技巧。
1. 环境准备与架构适配
在开始制作离线包前,需要特别注意银河麒麟V10 SP3与CentOS 8的兼容性关系。通过执行nkvers命令可确认系统具体版本,这是后续仓库配置的基础。ARM64架构的软件包与x86体系存在显著差异,这也是许多离线部署失败的根源所在。
关键检查点:
# 验证系统架构 uname -m # 应输出:aarch64 # 查看麒麟系统版本 cat /etc/kylin-release由于Docker官方未直接提供银河麒麟的仓库支持,我们需要通过等效CentOS 8的仓库进行适配。这里有个技术细节:Docker的仓库URL中通常使用$releasever变量,而银河麒麟的版本标识与CentOS存在差异。通过以下配置可解决此问题:
# 建立CentOS版本映射 echo "8" > /etc/yum/vars/centos_version # 修改仓库变量引用 sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo注意:部分麒麟版本可能需要额外安装
yum-utils工具包,用于管理仓库配置。若遇到yum-config-manager命令缺失,可通过yum install -y yum-utils安装。
2. 智能包下载策略
传统yum downloadonly操作虽然简单,但在复杂依赖场景下容易遗漏隐式依赖项。我们采用分层下载策略确保完整性:
- 核心组件下载:
mkdir -p /root/docker-rpm yum install --downloadonly --downloaddir=/root/docker-rpm \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin- 依赖树扩展:
# 使用repoquery检查完整依赖 yum install -y yum-utils repoquery --requires --resolve docker-ce | xargs yum install --downloadonly --downloaddir=/root/docker-rpm- 版本锁定技巧:
# 查看可用版本 yum list docker-ce --showduplicates | sort -r # 下载指定版本(示例) yum install --downloadonly --downloaddir=/root/docker-rpm \ docker-ce-3:26.1.0-1.el8 \ docker-ce-cli-1:26.1.0-1.el8常见依赖包清单:
| 包类型 | 示例包名 | 必要性 |
|---|---|---|
| 主程序 | docker-ce | 必需 |
| CLI工具 | docker-ce-cli | 必需 |
| 容器运行时 | containerd.io | 必需 |
| 插件 | docker-buildx-plugin | 可选 |
| 网络组件 | docker-scan-plugin | 可选 |
3. 离线安装的工程化实践
获得RPM包后,真正的挑战在于如何确保离线环境下的可靠部署。以下是经过验证的最佳实践:
标准化安装流程:
# 1. 清理旧版本(重要!) for pkg in docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine docker-ce docker-ce-cli containerd.io; do yum remove -y $pkg 2>/dev/null done # 2. 批量安装(忽略依赖检查) rpm -ivh --nodeps /root/docker-rpm/*.rpm # 3. 验证安装 rpm -qa | grep -E 'docker|containerd'存储配置优化:
// /etc/docker/daemon.json { "data-root": "/data/docker", "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://registry.docker-cn.com"] }关键提示:ARM架构下必须设置
native.cgroupdriver=systemd参数,否则可能导致Kubernetes集成异常。配置后需执行systemctl restart docker生效。
4. 部署验证与排错指南
完整的离线部署应当包含健康检查环节。以下是多维验证方案:
基础功能测试:
# 服务状态检查 systemctl is-active docker # 版本查询 docker version --format '{{.Server.Version}}' # 基础容器测试 docker run --rm arm64v8/alpine:latest uname -mKubernetes兼容性配置: 当需要与K8s集成时,containerd的CRI接口需要特殊配置:
# 修改containerd配置 sed -i 's/disabled_plugins = \["cri"\]/# disabled_plugins = ["cri"]/' /etc/containerd/config.toml # 重启服务 systemctl restart containerd # CRI测试工具配置 cat <<EOF > /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF典型问题处理:
- 镜像拉取失败:
# 临时使用国内镜像源 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9cgroup驱动冲突: 检查
docker info | grep -i cgroup输出是否为systemd,否则需调整daemon.json配置。ARM镜像兼容性: 运行x86镜像时会报错,必须使用
arm64v8/前缀的镜像或多架构镜像。
5. 进阶:离线仓库构建与版本管理
对于需要维护多套环境的场景,建议建立本地仓库而非简单RPM包集合:
创建本地仓库:
# 安装createrepo工具 yum install -y createrepo # 生成仓库元数据 createrepo /root/docker-rpm # 创建仓库配置文件 cat <<EOF > /etc/yum.repos.d/local-docker.repo [local-docker] name=Local Docker Repository baseurl=file:///root/docker-rpm enabled=1 gpgcheck=0 EOF版本升级策略:
- 在联网环境下载新版RPM到临时目录
- 使用
repoquery --compare-to比对版本差异 - 通过
yum downgrade或yum update测试兼容性 - 更新本地仓库元数据
在完成所有部署后,建议将/root/docker-rpm目录打包为带版本号的归档文件,例如docker-offline-26.1.0-kylin_aarch64.tar.gz,并附上包含以下内容的README:
=== 离线安装包说明 === 系统要求:银河麒麟V10 SP3 ARM64 包含组件: - docker-ce-26.1.0 - containerd.io-1.6.28 - docker-compose-plugin-2.6.0 校验方式: sha256sum docker-offline-*.tar.gz 部署命令: tar -xzf package.tar.gz -C /root cd /root/docker-rpm && rpm -ivh --nodeps *.rpm