在国产麒麟V10 ARM服务器上离线部署Docker 26.1.0,我踩过的坑都帮你填平了
在国产麒麟V10 ARM服务器上离线部署Docker 26.1.0的避坑指南
当你在一个完全隔离的内网环境中,面对一台银河麒麟V10 SP3 ARM64服务器,需要部署最新版Docker时,传统的安装方法几乎全部失效。这不是普通的安装教程,而是一份从真实血泪教训中总结出来的避坑手册。我们将从零开始,解决离线环境下从依赖管理到服务配置的一系列难题。
1. 环境准备:构建离线部署的基础
在开始之前,确保你有一台能够访问外网的临时机器,最好是与目标服务器相同架构和操作系统版本的银河麒麟V10 SP3 ARM64系统。这台机器将用于准备离线安装包。
关键检查点:
- 确认系统架构:
uname -m应显示aarch64 - 检查操作系统版本:
nkvers应显示Kylin Linux Advanced Server release V10 (SP3)
注意:如果临时机器与目标服务器存在版本差异,可能导致依赖不兼容问题。建议使用虚拟机创建完全相同的环境进行打包。
2. 仓库适配:解决ARM架构下的依赖难题
由于Docker官方仅提供x86_64架构的CentOS仓库,我们需要进行特殊适配:
# 创建CentOS版本标识文件 echo "8" > /etc/yum/vars/centos_version # 修改Docker仓库配置 sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo常见问题排查表:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无法找到docker-ce包 | 仓库URL错误 | 检查/etc/yum.repos.d/docker-ce.repo中的baseurl |
| 架构不匹配错误 | 使用了x86_64仓库 | 确认URL中包含aarch64而非x86_64 |
| GPG校验失败 | 密钥过期 | 更新GPG密钥:rpm --import https://download.docker.com/linux/centos/gpg |
3. 离线包制作:完整依赖链的获取方法
制作离线安装包时,最大的挑战是确保所有依赖都被正确下载。以下是经过验证的有效方法:
# 创建下载目录 mkdir -p /root/docker-rpm/ # 下载完整依赖链 yum install --downloadonly --downloaddir=/root/docker-rpm/ \ docker-ce-26.1.0 \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin关键文件清单:
docker-ce-26.1.0-*.aarch64.rpm:主程序包containerd.io-*.aarch64.rpm:容器运行时docker-ce-cli-*.aarch64.rpm:命令行工具*.selinux:SELinux策略包(如启用)
提示:使用
yum deplist <package>可以查看完整的依赖关系,确保没有遗漏任何间接依赖。
4. 离线安装:分步执行与验证
将准备好的RPM包传输到目标服务器后,按顺序执行安装:
# 安装所有RPM包(忽略依赖检查) rpm -Uvh --nodeps /root/docker-rpm/*.rpm # 验证安装 docker --version安装后必须执行的配置:
- 数据目录设置:
{ "data-root": "/data/docker", "exec-opts": ["native.cgroupdriver=systemd"] }- 服务启动与验证:
systemctl enable --now docker docker info | grep -i cgroup5. 疑难杂症:CRI接口与containerd配置
当与Kubernetes集成时,可能会遇到CRI接口问题。解决方法如下:
# 修改containerd配置 sed -i 's/disabled_plugins = \["cri"\]/# disabled_plugins = ["cri"]/' /etc/containerd/config.toml # 重启服务 systemctl restart containerdcrictl工具配置:
runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false6. 性能调优:ARM架构下的特殊考量
银河麒麟V10在ARM架构上运行时,需要特别注意以下性能相关配置:
/etc/docker/daemon.json优化建议:
{ "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 65535, "Soft": 65535 } }, "storage-driver": "overlay2", "log-opts": { "max-size": "100m", "max-file": "3" } }内核参数调整:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p在实际部署中,我发现ARM架构上的容器性能对内存分配特别敏感。建议为关键容器明确设置内存限制,避免因内存竞争导致的性能下降。
