这次我们来看一个在龙芯 3B6000 平台上,通过配置官方或第三方 RPM 仓库,实现 Docker 最新版本(29.5.1+)自动化安装的实战方案。对于国产化平台的开发者而言,手动编译或寻找适配的二进制包往往耗时耗力,而利用成熟的 RPM 仓库进行安装,不仅能确保依赖关系正确,还能方便后续的升级维护。
本文将重点解决几个核心问题:如何在龙芯 3B6000 上配置可用的 Docker RPM 仓库;如何通过yum或dnf命令一键安装指定版本(如 29.5.1)的 Docker 引擎及其组件;安装后如何进行基础功能验证和常见问题排查。整个过程旨在提供一套可复制、可验证的操作流程,让你在龙芯平台上快速搭建起现代化的容器运行环境。
如果你正在或计划在龙芯 3B6000 服务器上部署基于 Docker 的微服务、CI/CD 流水线或开发测试环境,那么这篇从仓库配置到验证测试的完整指南,将能帮你节省大量摸索时间。
1. 核心能力速览
在深入操作步骤前,我们先通过下表快速了解本方案的核心要点和边界条件。
| 能力项 | 说明 |
|---|---|
| 目标平台 | 龙芯 3B6000 处理器,运行 LoongArch64 架构的 Linux 发行版(如 Loongnix、UOS、麒麟等) |
| 核心功能 | 通过配置 RPM 软件仓库,使用包管理器自动安装 Docker Engine 29.5.1 或更高版本 |
| 安装方式 | 命令行 (yum/dnf),非图形化一键包,需手动配置仓库源 |
| 依赖管理 | 包管理器自动解决containerd、runc、docker-compose-plugin等依赖 |
| 后续升级 | 支持通过同一仓库进行安全更新和版本升级 |
| 适合场景 | 需要在龙芯生产或测试环境中标准化、可维护地部署 Docker |
| 不适合场景 | 极度封闭的内网无外网环境(需提前下载离线 RPM 包并搭建本地仓库) |
2. 适用场景与使用边界
2.1 谁适合使用此方案?
本方案主要面向以下几类用户:
- 龙芯平台运维工程师:需要在多台龙芯 3B6000 服务器上批量、统一地部署 Docker 环境。
- 国产化软件开发者:开发的应用需要容器化,并在龙芯平台上进行本地构建和测试。
- 系统集成商:在为客户部署基于龙芯的云原生或微服务解决方案时,需要快速搭建基础容器平台。
- 技术爱好者:希望在自己的龙芯机器上体验最新版 Docker 的特性。
2.2 能解决什么问题?
- 简化安装流程:告别手动下载、传输、按顺序安装多个 RPM 包的繁琐过程。
- 确保依赖完整:避免因漏装某个依赖库(如
containerd.io,libseccomp)导致 Docker 服务启动失败。 - 便于版本管理:可以明确指定安装
docker-ce-29.5.1这样的具体版本,保证环境一致性。 - 支持后续更新:当仓库提供安全更新时,可以直接通过
yum update命令升级。
2.3 需要注意的边界与风险
- 仓库源可靠性:必须使用官方或可信的第三方仓库。不可信的源可能包含恶意软件或版本不兼容。
- 网络连通性:配置仓库需要服务器能访问对应的网络地址(如
https://download.docker.com或国内镜像站)。 - 系统版本兼容性:Docker 29.5.1 对系统内核和基础库有最低要求。需确保你的龙芯系统版本较新(如基于较新的内核和 glibc)。
- 权限与安全:安装 Docker 通常需要
root权限。安装后,docker命令默认需要sudo或以root用户运行,建议将普通用户加入docker组,但需知晓其安全含义(该组用户几乎拥有root权限)。
3. 环境准备与前置条件
开始之前,请确保你的龙芯 3B6000 系统满足以下条件。
3.1 系统与权限检查
确认架构与系统:
# 查看 CPU 架构,应显示 loongarch64 uname -m # 查看操作系统发行版信息 cat /etc/os-release输出示例:
loongarch64。本方案主要针对loongarch64架构。获取 root 权限:后续的仓库配置和软件安装都需要管理员权限。
sudo -i # 或使用 root 用户登录
3.2 清理旧版本 Docker(如有)
如果你的系统上存在旧版本 Docker(可能来自其他源或手动安装),建议先清理,避免冲突。
# 停止 Docker 服务 sudo systemctl stop docker docker.socket containerd # 卸载旧版本 Docker 相关包 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine \ containerd.io \ runc # 删除残留数据和配置(谨慎操作,会清除所有镜像、容器、卷) sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd3.3 安装必要工具
确保yum-utils已安装,它提供了yum-config-manager工具,用于管理仓库。
sudo yum install -y yum-utils4. 配置 Docker RPM 仓库
这是最关键的一步。Docker 官方为x86_64和arm64提供了仓库,但通常不直接包含loongarch64包。因此,我们需要寻找为龙芯架构提供构建的第三方仓库,或者使用国内社区维护的镜像源。
4.1 方案一:使用国内社区镜像源(推荐)
国内一些开源社区和镜像站提供了龙芯架构的 Docker RPM 包。以下以配置一个示例社区源为例(请注意:源地址可能随时间变化,请以最新社区文档为准)。
- 添加仓库配置文件: 在
/etc/yum.repos.d/目录下创建一个新的.repo文件,例如docker-loongarch.repo。sudo vi /etc/yum.repos.d/docker-loongarch.repo - 写入仓库配置: 将以下内容粘贴到文件中。这里是一个示例配置,你需要根据你找到的实际可用源进行替换。
重要:你需要将[docker-ce-stable-loongarch64] name=Docker CE Stable - LoongArch64 baseurl=https://mirrors.你的镜像站域名/docker-ce/linux/centos/$releasever/loongarch64/stable enabled=1 gpgcheck=1 gpgkey=https://mirrors.你的镜像站域名/docker-ce/linux/centos/gpghttps://mirrors.你的镜像站域名替换为真实的、提供龙芯架构 Docker 包的镜像站地址。可以搜索“龙芯 docker 镜像源”来查找当前可用的源。
4.2 方案二:使用官方仓库结构(如果未来官方支持)
如果未来 Docker 官方或某个主流发行版官方提供了 LoongArch64 仓库,配置方式将类似如下:
# 添加官方仓库(示例,当前可能不可用) sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo添加后,需要手动修改生成的/etc/yum.repos.d/docker-ce.repo文件,将其中的所有$basearch替换为loongarch64,并将baseurl指向正确的路径。
4.3 更新 Yum 缓存
添加仓库后,务必更新本地软件包缓存,使其识别新仓库中的包。
sudo yum makecache fast5. 安装 Docker Engine 29.5.1+
仓库配置成功后,就可以进行安装了。
5.1 查询可用版本
首先,查看仓库中提供了哪些 Docker 版本,确认是否有29.5.1。
sudo yum list docker-ce --showduplicates | sort -r输出会列出所有可用版本。找到类似docker-ce-29.5.1-1.el9的条目。
5.2 安装指定版本
通过yum install命令并指定完整包名进行安装。以下命令安装29.5.1版本。
sudo yum install -y docker-ce-29.5.1 docker-ce-cli-29.5.1 containerd.io docker-buildx-plugin docker-compose-plugin命令解释:
docker-ce: Docker 引擎核心。docker-ce-cli: Docker 命令行工具。containerd.io: 容器运行时。docker-buildx-plugin: 支持多架构构建的插件。docker-compose-plugin: Docker Compose V2,用于编排多容器应用。
yum会自动解析并安装所有这些包及其依赖。
5.3 启动 Docker 服务并设置开机自启
安装完成后,需要启动 Docker 守护进程。
# 启动 docker 服务 sudo systemctl start docker # 设置 docker 服务开机自启 sudo systemctl enable docker # 查看 docker 服务状态,确认运行正常 sudo systemctl status docker当status命令输出显示active (running)时,表示 Docker 服务已成功启动。
6. 功能测试与效果验证
安装和启动成功后,必须进行一系列基础测试来验证 Docker 是否完全正常工作。
6.1 验证 Docker 命令行和守护进程
运行经典的hello-world镜像,这是最直接的测试。
sudo docker run hello-world预期结果:命令会从 Docker Hub 拉取hello-world镜像(如果本地没有),然后运行一个容器。容器会打印出一段欢迎信息,例如 “Hello from Docker!”,然后退出。这表明 Docker 守护进程、命令行工具、容器拉取和运行功能全部正常。
6.2 验证容器基础功能
运行一个更实用的容器,例如一个长期运行的 Nginx,测试端口映射和后台运行。
# 在后台运行一个 nginx 容器,将宿主机的 8080 端口映射到容器的 80 端口 sudo docker run -d -p 8080:80 --name my-nginx nginx:alpine # 查看容器运行状态 sudo docker ps # 测试访问(如果宿主机有 curl) curl http://localhost:8080预期结果:docker ps应显示my-nginx容器状态为Up。使用curl或浏览器访问http://<你的服务器IP>:8080,应能看到 Nginx 的欢迎页面。
6.3 验证 Docker Compose 插件
安装时包含了docker-compose-plugin,它提供了docker compose命令(注意是空格,不是横线)。
# 验证 compose 插件是否安装成功 docker compose version预期结果:应输出 Docker Compose 的版本号,例如Docker Compose version v2.27.0。
6.4 验证用户组权限(可选但建议)
为了避免每次使用docker命令都要加sudo,可以将当前用户加入docker组。
# 将当前用户加入 docker 组 sudo usermod -aG docker $USER # 退出当前终端并重新登录,或使用以下命令使组更改生效 newgrp docker # 验证无需 sudo 即可运行 docker 命令 docker run --rm hello-world注意:此操作有安全风险,因为docker组权限等同于root。请仅在可信的单一用户开发环境中进行。
7. 配置优化与镜像加速
安装完成后,进行一些常用配置可以提升使用体验。
7.1 配置国内镜像加速器
从 Docker Hub 拉取镜像速度可能较慢,可以配置国内镜像加速器。修改或创建 Docker 守护进程配置文件/etc/docker/daemon.json。
sudo vi /etc/docker/daemon.json输入以下内容(以阿里云镜像加速器为例,你需要注册阿里云容器镜像服务获取专属加速地址):
{ "registry-mirrors": ["https://你的专属码.mirror.aliyuncs.com"] }保存后,重启 Docker 服务使配置生效。
sudo systemctl restart docker7.2 调整 Docker 数据存储路径(可选)
默认 Docker 将镜像、容器等数据存储在/var/lib/docker。如果该目录磁盘空间不足,可以修改到其他分区。
- 停止 Docker 服务:
sudo systemctl stop docker - 移动现有数据:
sudo mv /var/lib/docker /path/to/new/location - 创建软链接:
sudo ln -s /path/to/new/location/docker /var/lib/docker - 修改
daemon.json,添加"data-root": "/path/to/new/location/docker" - 启动 Docker 服务:
sudo systemctl start docker
8. 常见问题与排查方法
在龙芯平台上部署 Docker 可能会遇到一些特有或常见的问题。下表列出了典型问题及解决思路。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
yum install失败,提示“没有可用软件包 docker-ce” | 1. 仓库未正确配置或地址错误。 2. 仓库中确实没有 loongarch64的包。3. Yum 缓存未更新。 | 1. 检查/etc/yum.repos.d/下.repo文件内容。2. 运行 yum repolist all查看仓库是否启用。3. 尝试用 curl直接访问baseurl中的地址。 | 1. 确认仓库地址有效且支持loongarch64。2. 运行 sudo yum clean all && sudo yum makecache。3. 寻找其他可靠的龙芯 Docker 软件源。 |
| 安装过程中依赖包冲突 | 系统中已存在版本不兼容的containerd、runc等包。 | 查看yum报错信息,确认是哪个包冲突。 | 尝试先卸载冲突的旧包:sudo yum remove <包名>,再重新安装 Docker。 |
systemctl status docker显示失败,日志报错关于cgroup或iptables | 1. 系统内核版本过低或缺少模块。 2. iptables或nftables服务未运行或冲突。 | 1. 运行uname -r查看内核版本。2. 运行 sudo journalctl -u docker -n 50查看详细日志。 | 1. 升级系统内核到较新版本。 2. 确保 iptables服务正常运行。某些发行版可能需要切换到nftables后端。 |
docker run hello-world失败,提示“无法连接到 Docker 守护进程” | 1. Docker 服务未启动。 2. 当前用户没有 docker用户组权限,且未使用sudo。3. DOCKER_HOST环境变量设置错误。 | 1. 检查服务状态:sudo systemctl status docker。2. 运行 groups查看当前用户所在组。 | 1. 启动服务:sudo systemctl start docker。2. 使用 sudo执行命令,或将用户加入docker组后重新登录。 |
| 拉取镜像速度极慢 | 默认使用 Docker Hub,网络连接不佳。 | 运行docker info,查看Registry Mirrors是否配置。 | 按照7.1章节配置国内镜像加速器。 |
| 运行容器报错“exec format error” | 尝试运行的镜像架构与宿主机构架 (loongarch64) 不兼容。 | 使用docker image inspect <镜像名>查看镜像的Architecture字段。 | 寻找支持loongarch64或跨平台 (linux/loong64) 的镜像。对于自己的应用,需要在龙芯平台上重新构建。 |
9. 最佳实践与使用建议
为了在龙芯 3B6000 上稳定高效地使用 Docker,建议遵循以下实践:
- 仓库源管理:将可靠的 Docker for LoongArch 仓库配置文件进行备份。在部署新机器时,直接复用该配置文件,保证环境一致性。
- 版本锁定:在生产环境中,建议在
yum install时明确指定 Docker 版本号(如docker-ce-29.5.1),避免因自动升级到不兼容的新版本导致服务中断。 - 镜像兼容性:龙芯 (
loongarch64) 是较新的架构,Docker Hub 上原生支持该架构的官方镜像相对较少。优先使用标注了linux/loong64或来自可信龙芯生态的镜像。对于自有应用,务必在龙芯平台上构建镜像。 - 资源监控:使用
docker stats命令或cAdvisor、Portainer等工具监控容器的 CPU、内存使用情况。龙芯平台的性能特性可能与 x86 不同,需观察实际资源消耗。 - 数据持久化:对于数据库、配置文件等需要持久化的数据,务必使用 Docker 卷 (
volumes) 或绑定挂载 (bind mounts),避免数据丢失。 - 安全加固:定期更新 Docker 及相关组件以修复安全漏洞。避免在容器内以
root用户运行进程,可以在 Dockerfile 中使用USER指令指定非特权用户。
10. 总结与下一步
通过本文的步骤,你应该已经在龙芯 3B6000 平台上,成功通过配置 RPM 仓库的方式,安装并运行了 Docker Engine 29.5.1。这种方法的最大优势在于将复杂的依赖管理和安装流程交给了系统包管理器,使得安装、升级和卸载都变得规范且易于维护。
整个流程的核心在于找到并正确配置一个为loongarch64提供 Docker 包的软件仓库。一旦仓库源配置妥当,后续的安装命令就与在 x86 或 ARM 服务器上无异。验证环节的hello-world和nginx测试是判断安装是否成功的黄金标准。
接下来,你可以:
- 探索更多镜像:尝试拉取和运行一些基础龙芯架构镜像,如
loongarch64/centos、loongarch64/ubuntu。 - 构建自有镜像:编写 Dockerfile,将你的应用容器化,并在龙芯平台上进行构建和测试。
- 搭建编排环境:如果你有多台龙芯服务器,可以研究如何使用 Docker Swarm 或 Kubernetes(K8s)进行容器编排,目前已有社区在推进 K8s 对 LoongArch 的支持。
- 集成 CI/CD:将龙芯 Docker 主机作为 GitLab Runner 或 Jenkins Agent,实现应用的自动化构建和部署流水线。
龙芯平台上的容器生态正在快速发展,虽然相比主流架构仍有差距,但通过本文的方法搭建起基础环境,你已经迈出了在国产化平台上实践云原生技术的关键一步。建议收藏本文,在部署新环境或遇到问题时参考排查。