这类在国产龙芯平台上安装高版本 Docker 的需求核心不是“能不能装”而是“怎么装得稳、用得上”。龙芯 3B6000 作为自主架构的 CPU其软件生态和常见的 x86 平台有显著差异直接使用官方仓库或通用安装脚本大概率会失败。很多人卡在第一步看到架构不匹配就放弃了。我建议把整个过程拆成三步来看先确认你的系统环境和包管理现状再找到或构建适配的 RPM 包最后才是处理安装后的依赖和配置。整个过程的关键在于理解龙芯平台的包依赖路径和 Docker 高版本对系统组件的要求而不是盲目执行命令。下面我会按实际落地的顺序从环境检查到最终验证完整走一遍。如果你手头正好有 3B6000 的机器可以跟着操作。1. 先搞清楚你的系统底子发行版、内核和已有 Docker在龙芯机器上动手前最忌讳的就是不看系统现状。不同的基础系统后续的包获取和依赖解决路径完全不同。1.1 确认操作系统发行版和版本首先连上你的龙芯 3B6000 服务器或开发板打开终端执行以下命令cat /etc/os-release你需要重点关注NAME和VERSION_ID字段。在龙芯生态中常见的有Loongnix这是龙芯官方维护的发行版基于 Fedora 或 openEuler 等。版本号可能是 20、21 或对应上游的版本。UOS统信操作系统或Kylin麒麟这些是商业发行版通常有自己定制的仓库。社区爱好者移植的Debian或Arch Linux。记录下你的发行版名称和具体版本号这直接决定了你应该去哪里找 RPM 包或者应该基于哪个源来编译。1.2 检查内核版本与架构接下来查看内核信息uname -r uname -m对于龙芯 3B6000uname -m的输出应该是loongarch64。这是龙芯 3A5000/3B6000 系列采用的 64 位 LoongArch 架构。请务必确认这一点所有后续的包都必须是对应loongarch64架构的而不是老的mips64el龙芯 3A4000 及以前。内核版本如5.10.x则关系到 Docker 运行所需的内核模块支持比如overlay2存储驱动、cgroup等。通常主流发行版的内核都已包含这些模块但最好确认一下。1.3 探查现有 Docker 和容器运行时执行以下命令看看系统里是否已经存在旧版本的 Docker 或其它容器运行时如 Podmanwhich docker docker --version 2/dev/null || echo “Docker not found” systemctl list-unit-files | grep -E “(docker|containerd)” rpm -qa | grep -E “(docker|containerd|runc)” # 如果是 RPM 系统如果发现有旧版本比如 Docker 1.13 或 18.x我建议先做好数据备份如/var/lib/docker目录然后彻底清理旧版本避免依赖冲突。清理命令取决于你的包管理器yum remove或dnf remove。2. 获取适配 LoongArch64 的 Docker 29.5.1 RPM 包这是最核心、也最容易踩坑的一步。Docker 官方并不提供 LoongArch64 的二进制包所以你有三个主要途径从龙芯或社区仓库直接安装、下载他人构建好的包、或者自己从源码编译。2.1 首选检查官方或社区仓库对于Loongnix系统首先尝试启用官方或社区提供的软件仓库。你可以查看/etc/yum.repos.d/目录下的.repo文件。例如尝试用系统包管理器搜索# 对于 dnf (Fedora系/Loongnix) dnf search docker-ce-29.5.1 # 对于 yum (较老系统) yum search docker-ce-29.5.1如果仓库里有那是最简单的。但根据经验高版本如 29.5.1可能不会及时进入稳定仓库。你可能会找到稍旧一点的版本如 26.x。这时你需要权衡是接受稍旧的稳定版本还是继续寻找 29.5.1。注意不要轻易添加来路不明的第三方仓库尤其是针对 x86_64 架构的仓库这会导致依赖地狱和系统不稳定。2.2 次选寻找预编译的 RPM 包如果仓库里没有下一步就是去龙芯的社区或镜像站寻找有没有爱好者提前编译好的docker-ce-29.5.1的 RPM 包。你可以尝试访问一些知名的开源镜像站在其loongarch64或loongson目录下寻找。例如使用wget或curl直接尝试下载以下 URL 仅为示例格式需要你根据实际找到的地址替换wget https://mirrors.example.com/loongarch64/docker/29.5.1/docker-ce-29.5.1-1.el9.loongarch64.rpm wget https://mirrors.example.com/loongarch64/docker/29.5.1/docker-ce-cli-29.5.1-1.el9.loongarch64.rpm wget https://mirrors.example.com/loongarch64/docker/29.5.1/containerd.io-2.0.0-1.el9.loongarch64.rpm关键点Docker Engine 通常被拆分成多个包docker-ce主引擎、docker-ce-cli命令行工具、containerd.io容器运行时。你需要同时下载这几个核心包且版本要兼容。containerd.io的版本必须与 Docker 29.5.1 匹配具体版本号需要查询 Docker 官方文档或编译说明。2.3 备选从源码编译最稳妥但最耗时如果找不到现成的包从源码编译是最终手段。这需要你的机器有完整的开发环境gcc, make, git 等。准备编译环境# 以 Loongnix/Fedora 为例 dnf groupinstall “Development Tools” dnf install git golang rpm-build selinux-policy-devel获取 Docker 源码git clone https://github.com/docker/docker-ce.git cd docker-ce git checkout v29.5.1 # 切换到指定版本标签了解编译流程 Docker 的编译系统比较复杂它有一组 Makefile 目标。通常你需要先确保 Go 环境配置正确然后针对loongarch64架构进行交叉编译或在本地编译。社区可能有现成的编译脚本或文档建议先搜索 “docker loongarch64 compile” 等关键词参考他人的经验。编译生成 RPM 在docker-ce目录下通常会有components/packaging/rpm这样的目录里面存放着生成 RPM 的 spec 文件。你需要使用rpmbuild命令来构建。# 这是一个非常简化的示例实际参数和路径需调整 rpmbuild -bb –targetloongarch64 components/packaging/rpm/docker-ce.spec编译过程会下载大量依赖并且可能遇到各种架构相关的代码补丁问题。这是整个过程中技术难度最高的部分需要耐心和一定的排错能力。3. 安装 RPM 包与处理依赖关系假设你已经通过上述某种方式获得了docker-ce-29.5.1、docker-ce-cli-29.5.1和对应版本containerd.io的.rpm文件。3.1 使用 RPM 命令安装在存放 RPM 包的目录下执行安装。强烈建议使用rpm -ivh而不是-Uvh因为如果系统里没有任何 Docker-i安装和-U升级效果一样但如果安装失败-i更容易留下清晰的错误信息供排查。rpm -ivh containerd.io-*.loongarch64.rpm rpm -ivh docker-ce-cli-29.5.1-*.loongarch64.rpm rpm -ivh docker-ce-29.5.1-*.loongarch64.rpm3.2 解决依赖问题安装时几乎一定会报依赖错误。这是龙芯等非 x86 平台软件生态的常态。错误信息会明确告诉你缺少哪个库如libc.so.6(GLIBC_2.38)或哪个包如docker-ce-rootless-extras。缺库文件根据缺少的库名用包管理器搜索安装。例如dnf provides “*/libxxx.so.*” # 查找哪个包提供此库 dnf install package-that-provides-lib缺配套包你可能还需要下载安装docker-ce-rootless-extras、docker-buildx-plugin、docker-compose-plugin等插件的 LoongArch64 版本。同样需要去镜像站寻找或自行编译。一个核心技巧如果某个依赖在 LoongArch64 仓库里确实没有但你有同版本 x86_64 的 SRPM源码包可以尝试下载 SRPM在龙芯机器上重新编译成 LoongArch64 的 RPM。这相当于把依赖链也移植过来。3.3 安装完成后的基础配置安装成功后不要急着启动。先做两件事配置镜像加速器为了获得更好的拉取镜像体验编辑 Docker 守护进程配置文件/etc/docker/daemon.json如果不存在则创建{ “registry-mirrors”: [ “https://registry.example.com“ // 替换为可用的 LoongArch64 镜像加速地址例如一些国内云厂商或高校提供的镜像站 ] }目前公开的、稳定的 LoongArch64 专用 Docker 镜像站较少你可能需要寻找支持多架构包括loongarch64的镜像仓库或者使用代理。将用户加入 docker 组可选但建议避免每次使用docker命令都需要sudo。sudo usermod -aG docker $USER执行此命令后需要注销并重新登录组权限变更才会生效。4. 启动、验证与排错4.1 启动 Docker 服务使用 systemd 来管理 Docker 服务sudo systemctl start docker # 启动 sudo systemctl enable docker # 设置开机自启 sudo systemctl status docker # 查看状态检查状态时你希望看到active (running)。如果状态是failed立刻使用journalctl -u docker --since “5 minutes ago”查看详细日志。这是排错的第一现场。4.2 运行验证命令服务跑起来后运行几个基本命令验证安装是否真正成功docker version # 查看客户端和服务器端版本确认都是 29.5.1 docker info # 显示详细的系统级信息检查存储驱动、cgroup 驱动等重点看docker info的输出里有没有明显的警告WARNING比如关于 cgroup 内存、交换限制的支持等。4.3 拉取并运行一个测试镜像这是终极测试。由于loongarch64架构的镜像远没有amd64丰富你需要寻找明确支持该架构的镜像。一个经典的选择是hello-world但它的多架构支持可能不全。可以尝试一些基础镜像# 尝试拉取一个支持多架构的镜像Docker 会自动选择适合 loongarch64 的版本 docker pull --platform linux/loongarch64 busybox:latest # 如果上一条命令失败可以尝试指定已知存在的 loongarch64 镜像 # docker pull cr.loongnix.cn/library/busybox:latest # 例如龙芯镜像站的镜像 # 运行一个简单命令 docker run --rm busybox:latest echo “Hello, LoongArch!”如果这一步成功执行并输出了 “Hello, LoongArch!”那么恭喜你Docker 已经在你的龙芯 3B6000 上成功安装并运行了。4.4 常见问题与排查思路问题docker run报exec format error原因你拉取的镜像不是linux/loongarch64架构的而是linux/amd64的。Docker 不会自动转换 CPU 架构。解决使用--platform linux/loongarch64参数明确指定架构拉取或者寻找提供loongarch64版本镜像的仓库如cr.loongnix.cn。问题systemctl status docker显示失败日志提到iptables或cgroup相关错误原因内核模块未加载或配置不支持。排查检查lsmod | grep overlay和lsmod | grep br_netfilter确保相关模块已加载。未加载则尝试modprobe。检查内核参数cat /proc/sys/net/bridge/bridge-nf-call-iptables是否为1。检查cgroup文件系统是否已挂载mount | grep cgroup。问题拉取镜像速度极慢或超时原因默认的 Docker Hub 对loongarch64架构的镜像拉取可能支持不佳或网络连接不好。解决如前所述在/etc/docker/daemon.json中配置针对loongarch64的镜像加速器。同时可以多关注国内龙芯社区维护的镜像仓库。5. 生产环境考量与后续建议在个人开发机上跑通 Docker 只是第一步。如果你计划在龙芯 3B6000 的服务器上用于生产或持续集成还需要考虑更多。5.1 镜像来源与构建长期来看你不能总依赖他人构建的loongarch64镜像。你需要建立自己的镜像获取和构建流程使用多阶段构建在 Dockerfile 中你可以使用–platform$BUILDPLATFORM来构建依赖最终使用–platform$TARGETPLATFORM来生成linux/loongarch64的目标镜像。但这需要构建服务器本身也是 LoongArch 架构或者在 x86 服务器上配置复杂的交叉编译和 QEMU 模拟环境。利用 Docker BuildxBuildx 是 Docker 的扩展构建工具支持多平台构建。你可以在 x86 服务器上安装 Buildx 并配置 QEMU 模拟器来为loongarch64构建镜像。命令类似docker buildx create --use --name multiarch-builder docker buildx build --platform linux/loongarch64 -t your-image:tag . --push这需要额外的配置和学习成本但它是目前最主流的跨架构镜像构建方案。5.2 资源监控与日志龙芯平台上的 Docker 资源使用情况尤其是内存和 CPU 调度可能与 x86 平台有细微差异。建议部署监控工具如cAdvisor或Prometheus Node Exporter持续观察容器运行时的资源消耗是否正常。另外确保 Docker 守护进程日志和容器日志的轮转配置得当避免日志占满磁盘空间。可以配置/etc/docker/daemon.json中的log-driver和log-opts选项。5.3 版本升级路径你现在安装的是 29.5.1。未来如何安全升级我建议关注社区动态加入龙芯相关的开源社区或邮件列表关注 Docker 等基础软件的新版本移植进度。测试先行任何版本升级务必先在测试环境进行。升级步骤通常是停止服务 - 备份数据和配置 (/etc/docker,/var/lib/docker) - 安装新版本 RPM - 启动服务 - 全面测试。记录操作将本次成功的安装步骤、遇到的依赖问题及解决方法详细记录下来形成你自己的运维文档这对未来升级或部署新机器至关重要。在龙芯这样的自主平台上部署软件更像是一次“移植”而不仅仅是“安装”。整个过程考验的是你对软件依赖链的理解和问题排查能力。最有效的策略不是追求一步到位而是耐心地、分步骤地验证每一个环节从包安装、服务启动到镜像拉取、容器运行。把这条路走通一次以后面对其他软件的移植思路就会清晰很多。