news 2026/5/27 2:41:39

保姆级教程:用yum downloadonly搞定Docker离线包,一份包适配麒麟V10/CentOS 8

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:用yum downloadonly搞定Docker离线包,一份包适配麒麟V10/CentOS 8

银河麒麟V10 ARM64环境下Docker离线部署全指南

在国产化替代浪潮中,银河麒麟V10操作系统凭借其安全可靠的特性,正逐步成为关键领域的基础设施选择。而作为现代应用部署的核心工具,Docker的离线安装能力对于内网环境、安全隔离区域以及批量部署场景尤为重要。本文将手把手带您完成从依赖包下载到最终配置的完整流程,特别针对ARM64架构和麒麟V10 SP3的特殊需求进行优化。

1. 环境准备与基础清理

在开始制作离线安装包前,我们需要确保基础环境的纯净性。银河麒麟V10 SP3基于CentOS 8构建,这意味着我们可以利用CentOS生态中的大部分工具,但同时也需要注意一些细微差别。

首先确认系统架构和版本信息:

nkvers uname -m

彻底清理旧版Docker组件是避免冲突的关键步骤。不同于简单的yum remove,我们需要采用更全面的清理方案:

yum remove -y docker* containerd.io docker-runc \ docker-client* docker-common* docker-latest* \ docker-logrotate* docker-engine* \ docker-compose-plugin* docker-buildx-plugin*

注意:在ARM64架构上,某些x86_64残留配置文件可能导致后续安装异常,建议同时检查并清理/etc/docker/var/lib/docker目录。

2. 仓库配置与版本选择

Docker官方并未直接提供针对银河麒麟的仓库配置,但通过变量替换技巧可以完美适配。这里的关键在于理解$releasever变量的工作机制。

分步配置仓库

  1. 安装必要工具:
    yum install -y yum-utils
  2. 添加官方仓库:
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. 设置CentOS版本变量:
    echo "8" > /etc/yum/vars/centos_version
  4. 替换仓库变量:
    sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo

版本选择直接影响后续的兼容性。建议通过以下命令查看可用版本:

for pkg in docker-ce docker-ce-cli docker-buildx-plugin docker-compose-plugin; do echo "=== $pkg ===" yum list $pkg --showduplicates | sort -r | head -5 done

3. 离线包制作与完整性验证

真正的离线安装难点在于依赖项的完整下载。yum downloadonly虽然方便,但在ARM64架构下仍需特别注意依赖解析。

创建下载目录

mkdir -p /root/docker-rpm

精确下载指定版本(以26.1.0为例):

yum install --downloadonly --downloaddir=/root/docker-rpm/ \ docker-ce-3:26.1.0-1.el8 \ docker-ce-cli-1:26.1.0-1.el8 \ docker-buildx-plugin-0.14.0-1.el8 \ docker-compose-plugin-2.6.0-3.el8

验证下载内容时应检查:

  • 所有主包是否完整
  • ARM64架构标识(.aarch64后缀)
  • 依赖项数量(通常不少于20个包)

打包技巧

tar czvf docker-offline-arm64.tar.gz -C /root/docker-rpm .

4. 离线环境部署实战

将打包好的tar文件传输到目标机器后,按以下步骤部署:

  1. 解压安装包:

    mkdir -p /root/docker-offline tar xzvf docker-offline-arm64.tar.gz -C /root/docker-offline
  2. 强制安装所有RPM(忽略依赖警告):

    rpm -Uvh --nodeps /root/docker-offline/*.rpm
  3. 验证安装:

    docker --version containerd --version

存储配置优化

mkdir -p /data/docker cat > /etc/docker/daemon.json << EOF { "data-root": "/data/docker", "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://registry.docker-cn.com"] } EOF

启动并验证服务:

systemctl enable --now docker docker info | grep -E 'Storage Driver|Cgroup Driver'

5. 常见问题排查与调优

在ARM64环境中,容器运行时可能遇到一些特殊问题。以下是几个典型场景的解决方案:

CRI插件冲突: 当同时使用Kubernetes时,可能需要调整containerd配置:

sed -i 's/disabled_plugins = \["cri"\]/# disabled_plugins = ["cri"]/' /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 debug: false EOF

性能调优建议

  • 对于ARM64服务器,建议在daemon.json中添加:
    "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 65535, "Soft": 65535 } }
  • 内存限制调整:
    echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf sysctl -p

6. 批量部署与版本管理

对于需要大规模部署的场景,可以考虑以下进阶方案:

版本锁定文件

rpm -qa docker-ce docker-ce-cli > docker-version.lock

自动化校验脚本

#!/bin/bash EXPECTED="docker-ce-3:26.1.0-1.el8" CURRENT=$(rpm -q docker-ce) if [ "$CURRENT" != "$EXPECTED" ]; then echo "版本不匹配: 期望 $EXPECTED, 实际 $CURRENT" exit 1 fi

仓库镜像方案: 在内网搭建yum仓库镜像,将离线包导入:

createrepo /data/repos/docker-offline/

对应的仓库配置文件示例:

[docker-offline] name=Docker Offline Packages baseurl=file:///data/repos/docker-offline enabled=1 gpgcheck=0

通过这套方案,我们不仅实现了单机的离线安装,更构建了一套可复用的标准化部署流程。在实际的国产化替代项目中,这种"一次制作,多处部署"的方法能显著提升效率,特别是在需要部署数十甚至上百台服务器的场景下。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 2:41:38

认识电子元器件 —— 电感与磁珠篇:参数、选型与应用

前言如果电阻是“限流器”&#xff0c;电容是“蓄水池”&#xff0c;那么电感就是电路中的“惯性轮”——它抗拒电流的变化。在开关电源、射频电路、信号滤波和EMC防护中&#xff0c;电感与磁珠扮演着不可替代的角色。然而&#xff0c;很多工程师在面对磁芯材料、饱和电流、DCR…

作者头像 李华
网站建设 2026/5/27 2:38:02

毫米波XL-MIMO系统中SVD算法优化与工程实践

1. 毫米波XL-MIMO系统中的SVD技术挑战与创新 在毫米波超大规模多输入多输出&#xff08;XL-MIMO&#xff09;系统中&#xff0c;奇异值分解&#xff08;SVD&#xff09;作为信道估计与波束成形的数学基础&#xff0c;其计算效率直接影响系统实时性。传统SVD算法复杂度高达O(NtN…

作者头像 李华
网站建设 2026/5/27 2:33:58

用NEAT-Python搞定XOR问题:一个隐藏节点就够了?手把手教你调参与可视化

用NEAT-Python破解XOR难题&#xff1a;从零构建最小神经网络实战指南在机器学习领域&#xff0c;XOR问题就像是一块试金石&#xff0c;能够检验算法是否具备处理非线性关系的能力。传统的前馈神经网络需要人工设计隐藏层结构才能解决这个看似简单的逻辑运算&#xff0c;而今天我…

作者头像 李华
网站建设 2026/5/27 2:29:33

STM32F4实战:手把手教你启用数据缓存,让数组操作快人一步

STM32F4实战&#xff1a;手把手教你启用数据缓存&#xff0c;让数组操作快人一步在嵌入式开发中&#xff0c;处理大规模数据时经常会遇到性能瓶颈。想象一下&#xff0c;当你需要处理来自ADC的连续采样数据&#xff0c;或者操作一个大型图像缓冲区时&#xff0c;那些毫秒级的延…

作者头像 李华