保姆级教程:在银河麒麟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 # 应输出数字8
1.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.repo
2.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-rpm
3. 离线安装与配置
3.1 传输与解压
将打包文件通过安全介质拷贝到目标服务器:
mkdir -p /opt/docker-offline
tar -xzvf docker-arm64-repo.tar.gz -C /opt/docker-offline
3.2 强制安装RPM包
跳过依赖检查直接安装:
cd /opt/docker-offline/docker-arm64-rpm
rpm -Uvh --nodeps *.rpm
ARM架构特殊处理:
# 修复可能的库链接
ln -sf /usr/lib/aarch64-linux-gnu/libdevmapper.so.1.02 /usr/lib64/libdevmapper.so.1.02
3.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 version
4.2 crictl工具配置
创建客户端配置文件:
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
验证容器运行时接口:
crictl ps
5. 常见问题排查
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.rpm
5.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
更多推荐
所有评论(0)