保姆级教程:在银河麒麟V10 SP3 ARM64服务器上,用CentOS 8源离线部署Docker 26.1
银河麒麟V10 SP3 ARM64服务器离线部署Docker 26.1全流程指南
在国产化替代浪潮中,银河麒麟V10 SP3作为主流国产操作系统,常搭载于飞腾等ARM架构服务器。由于特殊场景下的网络隔离要求,离线环境部署容器引擎成为刚需。本文将手把手带您完成从CentOS 8源获取Docker 26.1到最终稳定运行的完整闭环,特别针对ARM64架构的依赖差异提供解决方案。
1. 环境准备与兼容性适配
1.1 系统版本确认与伪装
首先通过nkvers命令确认系统版本,输出应包含"Kylin Linux Advanced Server release V10 (SP3)"。由于Docker官方仅维护CentOS的YUM源,我们需要将银河麒麟伪装成CentOS 8环境:
# 创建CentOS版本标识文件 echo "8" > /etc/yum/vars/centos_version验证文件内容:
cat /etc/yum/vars/centos_version # 应输出数字81.2 清理旧版本组件
为避免冲突,需彻底移除旧版Docker及相关组件:
yum remove docker \ containerd.io \ docker-runc \ docker-client-* \ docker-common \ docker-latest-* \ docker-logrotate \ docker-engine \ docker-compose-plugin \ docker-buildx-plugin注意:在ARM架构下,部分依赖包名称可能与x86平台不同,若报错提示包不存在可忽略
2. 离线资源获取与传输
2.1 搭建临时下载环境
在有外网连接的临时机器上(需相同架构)执行:
# 安装必要工具 yum install -y yum-utils createrepo # 添加Docker官方源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 替换仓库变量 sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo2.2 下载完整依赖包
创建存储目录并下载ARM64架构专用包:
mkdir -p /root/docker-arm64-rpm # 指定版本下载(示例为26.1.0) yum install --downloadonly --downloaddir=/root/docker-arm64-rpm/ \ docker-ce-3:26.1.0-1.el8 \ docker-ce-cli-1:26.1.0-1.el8 \ containerd.io-1.6.31-3.1.el8 \ docker-buildx-plugin-0.14.0-1.el8 \ docker-compose-plugin-2.6.0-3.el8关键文件校验清单:
| 文件名 | 预期大小(ARM64) |
|---|---|
| docker-ce-26.1.0-1.el8.aarch64.rpm | ~25MB |
| containerd.io-1.6.31-3.1.el8.aarch64.rpm | ~30MB |
2.3 制作本地仓库
为方便依赖解析,可创建本地仓库:
createrepo /root/docker-arm64-rpm tar -czvf docker-arm64-repo.tar.gz -C /root docker-arm64-rpm3. 离线安装与配置
3.1 传输与解压
将打包文件通过安全介质拷贝到目标服务器:
mkdir -p /opt/docker-offline tar -xzvf docker-arm64-repo.tar.gz -C /opt/docker-offline3.2 强制安装RPM包
跳过依赖检查直接安装:
cd /opt/docker-offline/docker-arm64-rpm rpm -Uvh --nodeps *.rpmARM架构特殊处理:
# 修复可能的库链接 ln -sf /usr/lib/aarch64-linux-gnu/libdevmapper.so.1.02 /usr/lib64/libdevmapper.so.1.023.3 存储与镜像配置
创建专用数据目录并配置daemon.json:
{ "data-root": "/data/docker", "registry-mirrors": ["https://registry.docker-cn.com"], "exec-opts": ["native.cgroupdriver=systemd"], "default-runtime": "runc" }验证配置:
mkdir -p /data/docker systemctl daemon-reload systemctl enable --now docker docker info | grep -E 'Storage|Cgroup'4. 容器运行时调优
4.1 containerd配置
编辑配置文件确保CRI插件启用:
mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml sed -i 's/disabled_plugins = \["cri"\]/# disabled_plugins = ["cri"]/' /etc/containerd/config.toml重启服务验证:
systemctl restart containerd ctr version4.2 crictl工具配置
创建客户端配置文件:
runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false验证容器运行时接口:
crictl ps5. 常见问题排查
5.1 依赖缺失处理
若出现库文件缺失错误,可手动补充:
# 示例:解决libseccomp报错 wget http://mirror.centos.org/altarch/8/BaseOS/aarch64/os/Packages/libseccomp-2.5.1-1.el8.aarch64.rpm rpm -ivh libseccomp-2.5.1-1.el8.aarch64.rpm5.2 服务启动失败排查
查看详细日志:
journalctl -u docker --no-pager -n 50关键错误代码对照表:
| 错误码 | 可能原因 | 解决方案 |
|---|---|---|
| 139 | 架构不兼容 | 确认下载的是aarch64包 |
| 203 | 内核模块缺失 | 检查kernel-headers版本 |
| 127 | 命令不存在 | 检查PATH环境变量 |
5.3 性能调优建议
针对ARM服务器特有优化:
# 调整内存分配策略 echo "vm.overcommit_memory=1" >> /etc/sysctl.conf sysctl -p # 优化swap使用 echo "vm.swappiness=10" >> /etc/sysctl.conf