三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

在国产麒麟V10 ARM服务器上离线部署Docker 26.1.0,我踩过的坑都帮你填平了

在国产麒麟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

安装后必须执行的配置:

  1. 数据目录设置:
{ "data-root": "/data/docker", "exec-opts": ["native.cgroupdriver=systemd"] }
  1. 服务启动与验证:
systemctl enable --now docker docker info | grep -i cgroup

5. 疑难杂症:CRI接口与containerd配置

当与Kubernetes集成时,可能会遇到CRI接口问题。解决方法如下:

# 修改containerd配置 sed -i 's/disabled_plugins = \["cri"\]/# disabled_plugins = ["cri"]/' /etc/containerd/config.toml # 重启服务 systemctl restart containerd

crictl工具配置:

runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false

6. 性能调优: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架构上的容器性能对内存分配特别敏感。建议为关键容器明确设置内存限制,避免因内存竞争导致的性能下降。

← 返回列表