
最近在龙芯 3B6000 平台上部署容器化应用时发现系统自带的 Docker 版本较低无法满足一些新特性如 BuildKit 的增强功能、容器资源管理改进等的需求。尤其是在尝试运行某些依赖新版本 Docker 的 CI/CD 工具链或容器镜像时版本兼容性问题就凸显出来。本文将详细记录在龙芯 3B6000 架构的服务器上通过 RPM 包手动安装高版本 Docker 29.5.1 的完整过程涵盖从环境检查、依赖解决、安装配置到验证测试的全链路并针对龙芯平台可能遇到的特殊问题提供解决方案。无论你是正在将应用向国产化平台迁移的开发者还是负责龙芯服务器运维的工程师这篇实战指南都能帮你绕过坑点顺利完成部署。1. 背景与核心概念在深入安装步骤之前我们有必要厘清几个关键概念这有助于理解为什么在龙芯平台上安装 Docker 需要特别的步骤。Docker 是什么Docker 是一个开源的应用容器引擎允许开发者将应用及其依赖打包到一个可移植的容器中。容器与传统虚拟机不同它直接运行在宿主机的操作系统内核上因此更加轻量、快速并且能保证环境的一致性。Docker 29.5.1 是 Docker Engine 的一个较新版本包含了对安全性、性能和管理功能的诸多改进。RPM 包管理RPMRed Hat Package Manager是 Red Hat 系列 Linux 发行版如 CentOS、Fedora、OpenAnolis、OpenEuler标准的软件包管理格式。通过 RPM 包安装软件可以自动处理依赖关系尽管有时仍需手动解决并方便地进行升级、查询和卸载。在无法直接使用yum或dnf从官方仓库安装特定版本时手动下载并安装 RPM 包是常见做法。龙芯 3B6000 平台龙芯 3B6000 是龙芯中科推出的新一代桌面和服务器处理器采用 LoongArch 指令集架构。这意味着其软件生态与常见的 x86_64 或 ARM 架构不同。虽然主流 Linux 发行版已逐步提供对 LoongArch 的原生支持但许多软件的预编译二进制包尤其是较新版本可能不会直接提供或者需要从特定的镜像源获取。因此在龙芯平台上安装软件特别是像 Docker 这样复杂的系统服务需要关注架构兼容性和依赖库的完整性。为什么需要手动安装高版本 Docker系统仓库版本滞后许多针对龙芯适配的 Linux 发行版其默认软件仓库中的 Docker 版本可能停留在较旧的稳定版如 20.10.x。新特性需求Docker 29.x 引入了 BuildKit 作为默认构建器、改进的docker compose集成、更细粒度的资源控制等功能这些对于现代开发运维流程至关重要。安全与合规新版本通常包含重要的安全补丁和 CVE 修复。本文将指导你完成在龙芯 3B6000 上获取并安装 Docker 29.5.1 的 RPM 包并确保其稳定运行。2. 环境准备与版本说明在开始操作前请确保你拥有一个龙芯 3B6000 服务器的操作权限最好是 root 用户或具有 sudo 权限的账户。基础环境确认操作系统本文以OpenAnolis OS 8.8龙蜥或统信 UOS 服务器版等基于龙芯 LoongArch 架构的 Linux 发行版为例。其他发行版如 OpenEuler for LoongArch 步骤类似。内核版本Docker 对内核版本有要求。运行以下命令检查uname -r输出应类似4.19.x或更高。建议使用 5.x 内核以获得更好的兼容性。架构确认uname -m输出应为loongarch64确认是龙芯架构。已安装的旧版本 Docker如果系统已安装旧版 Docker建议先彻底卸载避免冲突。sudo systemctl stop docker sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd安装必要工具确保wget、tar、gcc、make等基础工具已安装。sudo yum install -y wget tar gcc make目标版本说明Docker Engine: 29.5.1架构: loongarch64 (龙芯)包格式: RPM依赖: containerd, runc, docker-cli-plugins 等。重要提示由于龙芯生态的软件仓库更新节奏不一Docker 29.5.1 的官方预编译 RPM 包可能无法直接从主流镜像站获取。通常我们需要从龙芯社区维护的镜像源、发行版提供的测试仓库或者通过源码编译来获得。本文将假设我们能够从可靠的龙芯软件源找到对应的 RPM 包。3. 配置龙芯架构的软件源为了更方便地解决依赖关系我们首先需要配置一个包含较新软件包的龙芯架构软件源。这里以配置 OpenAnolis 的龙芯镜像源为例。备份原有的 YUM 源配置文件sudo mkdir -p /etc/yum.repos.d/backup sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2/dev/null || true创建新的 OpenAnolis LoongArch 源文件sudo tee /etc/yum.repos.d/anolis.repo EOF [anolis-os] nameAnolis OS - $basearch baseurlhttps://mirrors.openanolis.cn/anolis/$releasever/OS/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.openanolis.cn/anolis/RPM-GPG-KEY-ANOLIS [anolis-updates] nameAnolis OS - Updates baseurlhttps://mirrors.openanolis.cn/anolis/$releasever/updates/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.openanolis.cn/anolis/RPM-GPG-KEY-ANOLIS [anolis-plus] nameAnolis OS - Plus baseurlhttps://mirrors.openanolis.cn/anolis/$releasever/Plus/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.openanolis.cn/anolis/RPM-GPG-KEY-ANOLIS EOF注意$releasever和$basearch变量会被 yum 自动替换。对于 Anolis 8.8$basearch应为loongarch64。清理并重建 YUM 缓存sudo yum clean all sudo yum makecache测试源是否可用尝试搜索 containerdDocker 的核心依赖sudo yum search containerd如果能看到相关包说明源配置成功。4. 下载 Docker 29.5.1 RPM 包及其依赖由于 Docker 29.5.1 可能不在默认的稳定仓库中我们需要手动定位并下载 RPM 包。通常有以下几种途径途径A从发行版的测试或Plus仓库安装如果提供。途径B从龙芯社区或第三方构建的镜像站下载。途径C从 Docker 官方 GitHub Release 的源码编译最复杂。本文假设我们通过途径B从一个已知的、为龙芯架构提供软件包的镜像站下载。在实际操作中你需要根据当前可用的资源调整下载链接。步骤手动下载与依赖安装安装yum-utils工具包它提供的yumdownloader命令可以帮助我们下载 RPM 包及其依赖。sudo yum install -y yum-utils尝试从配置的源中直接安装如果仓库中有sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin执行后查看安装的版本docker --version。如果版本低于 29.5.1则继续下面的手动下载步骤。手动下载指定版本的 RPM 包。我们需要知道确切的包名。对于龙芯架构包名通常包含loongarch64后缀。例如docker-ce-29.5.1-1.el8.loongarch64.rpmdocker-ce-cli-29.5.1-1.el8.loongarch64.rpmcontainerd.io-1.6.31-1.el8.loongarch64.rpmdocker-buildx-plugin-0.12.1-1.el8.loongarch64.rpmdocker-compose-plugin-2.24.3-1.el8.loongarch64.rpm你可以使用wget从可靠的 URL 下载。这里以示例 URL 格式展示请注意实际 URL 需要你根据当前可用的镜像站进行查找和替换# 创建一个目录存放下载的包 DOWNLOAD_DIR~/docker_rpms mkdir -p $DOWNLOAD_DIR cd $DOWNLOAD_DIR # 示例下载命令URL需要替换为真实地址 # wget https://some-mirror.for.loongarch/docker/29.5.1/el8/loongarch64/stable/Packages/docker-ce-29.5.1-1.el8.loongarch64.rpm # wget https://some-mirror.for.loongarch/docker/29.5.1/el8/loongarch64/stable/Packages/docker-ce-cli-29.5.1-1.el8.loongarch64.rpm # wget https://some-mirror.for.loongarch/containerd/1.6.31/el8/loongarch64/stable/Packages/containerd.io-1.6.31-1.el8.loongarch64.rpm # ... 下载其他插件包 # 更实际的做法如果镜像站配置了repo可以用yumdownloader下载到当前目录而不安装 sudo yum install --downloadonly --downloaddir$DOWNLOAD_DIR docker-ce-29.5.1 docker-ce-cli-29.5.1 containerd.io docker-buildx-plugin docker-compose-plugin如果yumdownloader找不到指定版本说明仓库中没有。你必须通过网络搜索或联系发行版维护者获取这些 RPM 包的下载链接。安装下载的 RPM 包。进入存放 RPM 包的目录使用rpm命令或yum localinstall进行安装。后者能更好地处理本地包的依赖。cd $DOWNLOAD_DIR sudo yum localinstall -y *.rpm如果遇到依赖错误例如缺少container-selinux、libcgroup等yum localinstall会提示。你需要根据提示使用sudo yum install先安装这些缺失的依赖包然后再重新执行sudo yum localinstall -y *.rpm。5. 配置与启动 Docker 服务安装完成后需要对 Docker 进行一些基本配置。启动并设置开机自启sudo systemctl start docker sudo systemctl enable docker验证 Docker 服务状态和版本sudo systemctl status docker docker --version docker compose version # 验证插件是否安装成功此时docker --version应显示Docker version 29.5.1, build ...。可选配置 Docker 镜像加速器。国内访问 Docker Hub 可能较慢建议配置国内镜像源。编辑或创建 Docker 守护进程配置文件sudo tee /etc/docker/daemon.json EOF { registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOFregistry-mirrors: 镜像加速器地址可以添加多个。exec-opts: 设置 cgroup 驱动为 systemd与系统保持一致。log-driver和log-opts: 配置日志。storage-driver: 存储驱动overlay2是推荐且常用的。重新加载配置并重启 Dockersudo systemctl daemon-reload sudo systemctl restart docker6. 运行测试与基本使用安装配置完成后必须进行测试以确保 Docker 正常工作。运行经典测试容器sudo docker run --rm hello-world如果一切正常你将看到来自 Docker 的 “Hello from Docker!” 欢迎信息。这证明 Docker 守护进程运行正常并能从网络拉取镜像、创建并运行容器。测试更复杂的操作例如运行一个 Nginx 容器# 拉取 nginx 镜像注意需要龙芯架构可用的镜像或多架构镜像 sudo docker pull nginx:alpine # 运行一个临时容器映射端口 sudo docker run --rm -d -p 8080:80 --name my-nginx nginx:alpine # 检查容器运行状态 sudo docker ps # 访问测试 (在另一终端或本机) curl http://localhost:8080 # 停止容器 sudo docker stop my-nginx重要提示并非所有 x86_64 或 ARM 的 Docker 镜像都有对应的龙芯LoongArch64版本。你需要寻找明确支持linux/loong64平台的镜像。例如许多基础镜像如debian、alpine和流行软件如nginx、redis的官方镜像已提供多架构支持包含loong64。使用docker pull时Docker 会自动选择匹配当前主机架构的镜像标签。测试docker compose如果已安装插件mkdir ~/compose-test cd ~/compose-test tee docker-compose.yml EOF version: 3.8 services: web: image: nginx:alpine ports: - 8080:80 redis: image: redis:alpine EOF sudo docker compose up -d sudo docker compose ps sudo docker compose down7. 常见问题与排查思路在龙芯平台上安装高版本 Docker你可能会遇到一些特有或常见的问题。问题现象可能原因排查与解决思路sudo yum install docker-ce提示“没有可用软件包”1. 软件源未正确配置为 loongarch64。2. 仓库中确实没有该版本的 Docker。1. 检查/etc/yum.repos.d/下的 repo 文件确认baseurl指向正确的龙芯架构镜像路径。2. 使用yum search docker-ce查看仓库有哪些版本。3. 考虑手动下载 RPM 包安装。sudo yum localinstall *.rpm失败提示依赖错误如libseccomp 2.4系统自带的依赖库版本过低不满足 Docker 29.5.1 的要求。1. 根据错误信息尝试从龙芯软件源安装更高版本的依赖包如sudo yum install libseccomp-2.5.x。2. 如果源中没有可能需要手动编译安装该依赖但这会提高复杂度。3. 考虑寻找针对当前系统版本如 el8构建的、依赖要求更低的 Docker RPM 包。sudo systemctl start docker失败查看日志journalctl -xe -u docker发现错误1. 存储驱动不兼容如overlay2所需的内核版本或文件系统不支持。2. 与现有容器运行时如旧版 containerd冲突。3. SELinux 策略限制。1. 检查内核版本uname -r和文件系统类型df -T /var/lib/docker。2. 确保旧版 Docker/containerd 已彻底卸载见环境准备步骤。3. 尝试临时禁用 SELinuxsetenforce 0后启动 Docker如果成功则需要配置正确的 SELinux 策略或将其设置为宽容模式生产环境需谨慎。4. 检查/etc/docker/daemon.json配置是否有语法错误。docker run hello-world失败提示“exec format error”拉取的hello-world镜像架构与主机不匹配可能是 x86_64 版本。1. 显式指定龙芯架构的镜像标签如docker pull --platform linux/loong64 hello-world。2. 确认镜像是否支持多架构docker manifest inspect hello-world。3. 使用已知支持loong64的镜像进行测试如docker pull cr.loongnix.cn/library/alpine:latest并运行。Docker 命令执行慢或拉取镜像超时网络连接问题或默认 Docker Hub 镜像源在国内访问不畅。1. 按照第5步配置国内镜像加速器。2. 检查防火墙设置确保能访问外部网络和镜像仓库端口通常是 HTTPS 443。3. 对于龙芯生态可以尝试使用cr.loongnix.cn等国内龙芯镜像站。docker compose命令未找到或报错docker-compose-pluginRPM 包未成功安装或者安装的是独立的docker-composePython 版本。1. 确认已安装docker-compose-plugin包rpm -qa8. 最佳实践与工程建议在龙芯生产环境中部署 Docker除了完成安装还需遵循一些最佳实践以确保稳定性、安全性和可维护性。版本与源管理固定版本在生产环境中避免使用latest标签或频繁升级到最新版本。应明确记录所使用的 Docker Engine、containerd 以及所有插件的具体版本号如本文的 29.5.1便于环境一致性管理和故障回溯。使用内部镜像仓库对于企业级应用强烈建议搭建私有的 Docker 镜像仓库如 Harbor并将所有基础镜像和业务镜像推送至内网仓库。这可以加速部署避免因外网波动导致部署失败并增强安全性。维护专属 RPM 仓库如果有多台龙芯服务器需要部署相同版本的 Docker可以考虑在内部搭建一个 YUM/DNF 仓库将下载好的 Docker 29.5.1 RPM 包及其依赖放入其中。这样其他服务器可以通过内网源快速、一致地安装。配置优化日志轮转在/etc/docker/daemon.json中配置的max-size和max-file可以有效防止容器日志占满磁盘。存储路径默认 Docker 数据存储在/var/lib/docker。如果该分区空间不足可以考虑通过>