news 2026/6/3 23:05:33

运维老鸟的私房菜:一招`rpm -Uvh --nodeps`解决银河麒麟V10离线装Docker 26.1的依赖地狱

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维老鸟的私房菜:一招`rpm -Uvh --nodeps`解决银河麒麟V10离线装Docker 26.1的依赖地狱

银河麒麟V10 ARM64系统离线安装Docker 26.1的深度避坑指南

在国产化操作系统替代浪潮中,银河麒麟V10 SP3 ARM64版本已成为许多关键基础设施的首选。但当我们尝试在其上部署Docker 26.1时,往往会陷入依赖关系的泥潭——特别是当环境严格限制网络访问时,传统的yum install变得束手无策。本文将分享一套经过实战检验的离线安装方法论,重点解析如何用rpm -Uvh --nodeps这把"双刃剑"巧妙破局。

1. 环境准备与依赖分析

1.1 系统版本确认

在开始前,必须精确识别系统版本。银河麒麟V10 SP3基于CentOS 8构建,但软件包依赖关系存在微妙差异。执行以下命令获取系统指纹:

nkvers | grep -i "kylin linux advanced server" uname -m

对于ARM64架构,输出应包含aarch64标识。这个细节至关重要——错误的架构包会导致后续安装完全失败。

1.2 依赖树可视化

常规安装流程中,Docker 26.1的核心组件包括:

  • docker-ce-26.1.0
  • docker-ce-cli
  • containerd.io
  • docker-buildx-plugin
  • docker-compose-plugin

通过repoquery工具可以生成完整的依赖树(需联网环境):

yum install -y yum-utils repoquery --requires --resolve docker-ce-26.1.0 | sort -u

典型输出会显示container-selinux >= 2:2.95等关键依赖项。建议将这些依赖包按层级分类存储:

离线包目录结构示例: ~/docker-offline/ ├── core/ # Docker主程序 ├── level1-deps/ # 直接依赖 ├── level2-deps/ # 间接依赖 └── conflict-resolve/ # 冲突解决方案包

2. 离线包获取策略

2.1 官方源下载技巧

在有临时网络访问的环境下,使用yumdownloaderyum --downloadonly更可靠:

yum install -y yum-utils createrepo repotrack -a aarch64 -p ~/docker-offline/core \ docker-ce-26.1.0 \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin

关键参数说明:

  • -a aarch64:确保下载ARM64架构包
  • repotrack:自动追踪所有层级依赖
  • createrepo:为后续创建本地仓库做准备

2.2 依赖包手动审查

对每个下载的RPM包进行依赖审查:

rpm -qpR docker-ce-26.1.0-*.aarch64.rpm | grep -v "rtld"

重点关注config()类型的脚本依赖,这些往往需要手动处理。建议建立依赖关系电子表格:

包名所需最低版本已安装版本解决方式
container-selinux2:2.95需额外下载
libseccomp2.3.02.4.3已满足
systemd219239已满足

3. 高风险安装方案实施

3.1 --nodeps的精准使用

当遇到无法解决的依赖循环时,选择性使用--nodeps

# 先尝试正常安装基础依赖 rpm -ivh level1-deps/*.rpm # 对特定包跳过依赖检查 rpm -ivh --nodeps core/docker-ce-*.rpm # 事后补全依赖 for pkg in $(rpm -qR docker-ce | grep -v "rtld"); do find level2-deps/ -name "*${pkg%% *}*" -exec rpm -ivh {} \; done

警告:此操作后必须验证关键功能

docker info | grep -i cgroupdriver ctr version

3.2 依赖隔离技术

通过LD_LIBRARY_PATH实现库文件隔离:

mkdir -p /opt/docker26/libs find /usr/lib64/ -name "libseccomp.so*" -exec cp {} /opt/docker26/libs/ \; echo "export LD_LIBRARY_PATH=/opt/docker26/libs:$LD_LIBRARY_PATH" >> /etc/profile.d/docker.sh

配合环境变量启动Docker:

systemctl edit docker.service # 添加: [Service] Environment="LD_LIBRARY_PATH=/opt/docker26/libs"

4. 安装后关键配置

4.1 存储驱动优化

针对ARM架构调整存储驱动:

cat > /etc/docker/daemon.json <<EOF { "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "exec-opts": ["native.cgroupdriver=systemd"] } EOF

验证配置生效:

docker info | grep -E 'Storage Driver|Cgroup Driver'

4.2 容器运行时调优

解决containerd与Kubernetes的CRI兼容问题:

mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml sed -i '/disabled_plugins/s/^/#/' /etc/containerd/config.toml systemctl restart containerd

配置crictl端点:

cat <<EOF > /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 EOF

5. 故障诊断工具箱

5.1 依赖缺失诊断

快速定位缺失的依赖项:

ldd $(which dockerd) | grep "not found" rpm -qf --queryformat "%{NAME}\n" /usr/lib64/lib*.so* | sort -u

5.2 回滚方案设计

创建安装事务日志:

rpm -qa | grep -E 'docker|containerd' > docker_install.log xargs rpm -e < docker_install.log

建议在关键步骤前创建快照:

tar -zcvf /var/lib/docker-backup-$(date +%Y%m%d).tar.gz \ /var/lib/docker \ /etc/docker \ /etc/containerd

6. 性能优化实践

针对ARM架构的特别优化:

cat >> /etc/sysctl.conf <<EOF # 容器网络优化 net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 # 内存管理 vm.overcommit_memory=1 vm.max_map_count=262144 EOF

GPU加速支持(如有NVIDIA设备):

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | tee /etc/yum.repos.d/nvidia-container-toolkit.repo
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 23:04:45

GraphRAG 1.0:从知识图谱构建到工程化落地的全面指南

1. 从RAG到GraphRAG 1.0&#xff1a;一次开发与用户体验的全面升级如果你在过去一两年里折腾过基于大语言模型的问答系统或者知识库应用&#xff0c;那你肯定对RAG&#xff08;检索增强生成&#xff09;这个词不陌生。简单来说&#xff0c;RAG就是让模型在回答问题时&#xff0…

作者头像 李华
网站建设 2026/6/3 23:04:00

建筑CAD图纸翻译中容易被忽视的四个技术细节

建筑行业海外项目中&#xff0c;CAD图纸翻译的难点不仅在于翻译质量本身&#xff0c;更在于一些容易被忽视的技术细节。本文分享四个实际项目中常见的问题及解决方案。一、标注文字与引线的关联断裂翻译后文字长度变化&#xff0c;可能导致标注文字与引线之间的相对位置偏移。C…

作者头像 李华
网站建设 2026/6/3 22:59:33

从零打造五自由度仿生机械臂:3D打印、Arduino与舵机控制全解析

1. 项目概述&#xff1a;从灵感到可动的仿生机械臂几年前&#xff0c;我在一个创客展上第一次看到仿生机械臂的演示&#xff0c;那种精准模仿人手抓取、弯曲的动作&#xff0c;让我这个老电子爱好者瞬间着了迷。但当时市面上的成品要么是天价&#xff0c;要么就是一堆看不懂的代…

作者头像 李华
网站建设 2026/6/3 22:56:58

旧电脑别扔!用VMware装FydeOS让它变身“安卓/Linux双栖轻办公本”

旧电脑焕新指南&#xff1a;用VMware虚拟机打造FydeOS轻办公系统当科技产品更新换代的速度越来越快&#xff0c;许多家庭和办公室都堆积了不少性能落伍的旧电脑。直接丢弃不仅造成资源浪费&#xff0c;也不符合环保理念。其实&#xff0c;通过虚拟化技术和轻量级操作系统&#…

作者头像 李华
网站建设 2026/6/3 22:54:55

告别美术求人!用BMFont+Unity 2022.3,5分钟搞定游戏数字艺术字

独立开发者自救指南&#xff1a;5分钟用BMFont打造专属游戏艺术字凌晨三点的游戏开发工作室&#xff0c;咖啡杯早已见底。屏幕上闪烁的代码和半成品的UI界面形成鲜明对比——血条数字的样式与游戏整体风格格格不入&#xff0c;而美术同事的排期已经排到了下周。这种场景对于独立…

作者头像 李华