如果你正在龙芯 3B6000 平台上部署应用,大概率会遇到一个看似简单、实则棘手的问题:如何安装一个稳定、高版本的 Docker?
在 x86 服务器上,
yum install docker-ce
或
apt-get install docker.io
几乎是肌肉记忆。但切换到龙芯平台,尤其是最新的 3B6000 处理器时,你会发现官方仓库里可能没有 Docker,或者版本极其陈旧。手动编译?依赖复杂,耗时漫长,且极易出错。寻找第三方 RPM 包?版本混乱,安全性存疑,依赖关系像一团乱麻。
这不仅仅是“安装一个软件”的问题,它直接关系到在国产化平台上现代应用交付的基石是否稳固。没有 Docker,就意味着难以使用主流的微服务架构、CI/CD 流水线以及丰富的云原生生态工具。
本文要解决的,正是这个痛点。我们将彻底摒弃复杂的手动编译和不可靠的第三方包, 直接为龙芯 3B6000 系统配置一个官方的、持续更新的 RPM 仓库,并一键安装当前最高版本 Docker 29.5.1+ 。这个方法的核心价值在于: 自动化、可维护、与社区同步 。你不再需要每次升级都手动寻找包,系统可以像在 x86 上一样,通过标准的包管理器进行安全更新。
接下来,我会带你走通全流程:从理解 LoongArch 架构下的软件生态现状,到配置可信的软件仓库,最后完成 Docker 29.5.1 的安装、验证及生产环境最佳实践。无论你是正在推进国产化迁移的运维工程师,还是需要在龙芯环境进行开发的软件工程师,这篇文章都能提供一条清晰、可靠的路径。
1. 为什么在龙芯 3B6000 上安装 Docker 是个“技术活”?
在深入步骤之前,有必要先厘清我们面临的特殊挑战。这并非 Docker 本身复杂,而是龙芯平台所处的生态阶段使然。
1.1 架构之变:从 MIPS 到 LoongArch
龙芯 3B6000 处理器采用全新的 LoongArch 指令集架构,这是一套从底层自研的架构。它与之前龙芯 3A5000 使用的 MIPS 指令集,以及主流的 x86_64、ARM64 架构均不兼容。这意味着,所有软件都必须针对 LoongArch 重新编译。Docker 引擎及其庞大的依赖链(如
containerd
,
runc
)也不例外。主流 Linux 发行版的官方仓库通常只为 x86_64 和 ARM64 提供预编译包,LoongArch 需要专门的仓库维护。
1.2 生态建设期:仓库与软件包的滞后性 目前,支持 LoongArch 的软件生态主要由龙芯公司、开源社区(如 openEuler、Fedora 的 LoongArch 移植版)以及一些商业发行版(如统信 UOS、麒麟软件)共同建设。这些生态提供的软件仓库,其更新频率、软件包完整度和版本新旧程度各不相同。你可能遇到:
- 仓库有 Docker,但版本老旧 (如 Docker 18.x),无法支持新特性。
- 仓库没有 Docker ,只有一些基础的容器运行时组件。
- 存在多个来源的 RPM 包 ,但依赖关系冲突,导致安装失败。
1.3 本文方案的独特优势:直接对接上游社区 我们将采用的方案,其核心是直接配置来自 Linux 发行版官方社区 为 LoongArch 架构维护的软件仓库。以 Fedora 的 EPEL(Extra Packages for Enterprise Linux)或 openEuler 社区仓库为例,它们有专门的团队为 LoongArch 架构编译和维护软件包,包括 Docker。这样做的好处是:
- 版本最新 :能够获取到如 Docker 29.5.1 这样的高版本。
-
依赖自动解决
:包管理器(
yum/dnf)会自动处理所有依赖。 -
安全更新
:当有安全漏洞修复时,你可以直接通过
yum update获取更新。 - 可靠性高 :来自大型开源社区的仓库,经过更多测试。
简而言之,我们的目标不是“找到一个能装的包”,而是“建立一个可持续、可信任的软件安装通道”。
2. 环境准备与系统确认
在开始操作前,请确保你的环境符合以下要求。错误的起点会导致后续步骤全部失败。
2.1 硬件与操作系统
-
CPU
: 龙芯 3B6000。可以通过命令确认:
输出应包含cat /proc/cpuinfo | grep -i 'model name'3B6000字样。 - 操作系统 : 建议使用较新的、支持 LoongArch 架构的发行版。本文以 openEuler 22.03 LTS SP3 (LoongArch) 或 Fedora 38+ (LoongArch) 为例进行说明。其他基于 openEuler 或 Fedora 的发行版(如某些定制版麒麟、统信)也可能适用,但仓库路径可能需要调整。
- 权限 : 你需要 root 用户 权限来执行软件包安装和仓库配置。
2.2 检查当前系统架构
运行以下命令,确认系统架构是
loongarch64
:
uname -m
如果输出是
loongarch64
,则正确。如果是
mips64
或其他,说明系统可能运行在兼容模式或非目标系统上,本文方法不适用。
2.3 更新现有系统 在配置新仓库前,先更新现有系统,确保基础环境一致:
# 对于 openEuler 或使用 dnf 的系统
sudo dnf update -y
# 对于使用 yum 的旧版系统
sudo yum update -y
3. 配置 LoongArch 架构的 Docker RPM 仓库
这是最关键的一步。我们将为系统添加一个包含高版本 Docker 的远程仓库。
3.1 安装必要的工具
首先确保
yum-utils
工具包已安装,它提供了
yum-config-manager
等实用工具:
sudo dnf install -y yum-utils # 或 sudo yum install -y yum-utils
3.2 添加 Docker 官方社区仓库(推荐方式) Docker 官方为不同架构提供了稳定的仓库。虽然 Docker 官网主要展示 x86/ARM,但其仓库服务器通常包含多架构构建。对于 LoongArch,我们可以尝试添加 Fedora EPEL 或 openEuler 的 extras 仓库,它们常包含较新的 Docker 版本。
-
方案A:配置 openEuler 22.03 LTS SP3 的 EPOL 和 extras 仓库 openEuler 的 EPOL (EulerPilot Open Linux) 和 extras 仓库提供了大量额外软件。
# 1. 备份原有 repo 文件(可选) sudo cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak # 2. 检查并添加 EPOL 仓库(如果尚未启用) # 通常 openEuler 22.03 LTS SP3 的 ISO 或默认安装已包含 EPOL,但请确认 sudo dnf repolist | grep -i epol # 如果没有输出,可能需要手动添加 repo 文件。请根据你的系统版本从 openEuler 镜像站获取正确的 .repo 文件。 # 例如,从 https://repo.openeuler.org/openEuler-22.03-LTS-SP3/EPOL/loongarch64/ 查看 # 3. 确保 extras 仓库已启用 sudo dnf config-manager --set-enabled extras -
方案B:配置 Fedora EPEL 仓库(适用于 Fedora LoongArch 或兼容系统) Fedora EPEL 仓库是高质量额外软件包的重要来源。
# 安装 epel-release 包,它会自动配置仓库 sudo dnf install -y https://mirrors.bfsu.edu.cn/fedora-epel/epel-release-latest-8.noarch.rpm # 注意:上面的URL是示例,你需要找到适用于你的 Fedora 版本和 LoongArch 的 epel-release 包。 # 可以访问国内镜像站如 清华 tuna、中科大 ustc 寻找 LoongArch 的 EPEL 仓库。
3.3 搜索并确认 Docker 可用版本 添加仓库后,更新本地缓存并搜索 Docker:
sudo dnf makecache
sudo dnf search docker-ce --showduplicates # 搜索社区版
# 或者搜索 docker (可能指旧版本)
sudo dnf list available docker* | grep -E '^docker'
如果配置成功,你应该能在列表中看到
docker-ce
,
docker-ce-cli
,
containerd.io
等包,并且版本号包含
29.5.1
或更高。
4. 安装 Docker Engine 29.5.1+
一旦仓库就绪,安装过程就变得非常标准。
4.1 执行安装命令 我们将安装 Docker 社区版(docker-ce)、客户端(docker-ce-cli)和容器运行时(containerd.io)。
sudo dnf install -y docker-ce docker-ce-cli containerd.io
dnf
会自动解析并安装所有必要的依赖包。如果它提示“没有可用软件包 docker-ce”,则说明上一步的仓库配置未生效,需要回头检查仓库地址和可用性。
4.2 指定安装版本(可选) 如果你想安装特定版本(例如,确保是 29.5.1),可以使用以下格式:
sudo dnf install -y docker-ce-29.5.1 docker-ce-cli-29.5.1 containerd.io
使用
dnf list available docker-ce --showduplicates
来查看仓库中所有可用的版本。
5. 启动 Docker 服务并验证安装
安装完成后,需要启动服务并运行测试。
5.1 启动 Docker 守护进程并设置开机自启
# 启动 docker 服务
sudo systemctl start docker
# 设置开机自动启动
sudo systemctl enable docker
# 查看服务状态,确认处于 active (running)
sudo systemctl status docker
如果状态正常,你将看到绿色的 “active (running)” 字样。
5.2 运行经典测试镜像 运行一个最简单的容器来验证 Docker 引擎是否工作正常:
sudo docker run hello-world
这个命令会从 Docker Hub 拉取一个极小的测试镜像并在容器中运行。如果一切顺利,你将看到一段 “Hello from Docker!” 的成功信息。这证明 Docker 安装成功,并且能够拉取和运行容器。
5.3 验证版本信息 确认安装的正是我们想要的版本:
docker --version
输出应类似于:
Docker version 29.5.1, build 1234567
。
6. 配置 Docker 以非 root 用户运行(可选但推荐)
默认情况下,Docker 命令需要
sudo
。为了方便,可以将你的普通用户加入
docker
用户组。
6.1 创建 docker 用户组(通常安装时已创建)并添加用户
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 或者将指定用户名(如 ‘developer’)加入 docker 组
# sudo usermod -aG docker developer
6.2 生效组权限 重要 :组权限更改不会立即生效于当前已登录的会话。你需要:
- 方式一 :注销并重新登录。
-
方式二
:在当前终端运行
newgrp docker命令(仅对该终端生效)。
之后,你就可以不使用
sudo
直接运行
docker
命令了:
docker ps
7. 配置国内镜像加速器
由于网络原因,从 Docker Hub 拉取镜像可能很慢。配置国内镜像加速器可以极大提升速度。
7.1 创建或修改 Docker 守护进程配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
你可以选择一个或多个镜像地址。上述配置了中国科学技术大学、网易和百度的镜像。
7.2 重启 Docker 服务使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
7.3 验证镜像加速器配置
docker info | grep -A 1 "Registry Mirrors"
输出中应该能看到你配置的镜像地址。
8. 常见问题与排查思路
在龙芯平台上,你可能会遇到一些特殊问题。下表列出了常见现象及解决方法:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
sudo dnf install docker-ce
提示“没有可用软件包”
|
1. 未正确配置 LoongArch 仓库。
2. 仓库中确实没有 docker-ce 包。 |
1.
dnf repolist
查看已启用仓库。
2.
dnf search docker
在所有仓库中搜索。
3. 检查
/etc/yum.repos.d/
下 repo 文件的
baseurl
是否指向正确的 LoongArch 架构路径。
|
1. 根据第 3 节重新配置仓库,确保 URL 包含
loongarch64
。
2. 尝试其他社区仓库源(如 openEuler EPOL, Fedora EPEL)。 |
| 安装过程中出现依赖冲突(如 containerd.io 版本冲突) | 系统已存在旧版本或来自其他源的 containerd。 | 查看错误详情,确认冲突的包名。 |
1. 尝试
sudo dnf remove containerd.io
后重新安装。
2. 使用
sudo dnf install -y --allowerasing docker-ce
(谨慎使用,会移除冲突包)。
|
sudo systemctl start docker
失败
|
1. 内核模块或 cgroups 配置问题。
2. 存储驱动不兼容。 3. 端口被占用。 |
1.
sudo journalctl -xe -u docker
查看详细日志。
2.
sudo dmesg | tail -50
查看内核日志。
|
1. 确保内核版本较新,并已启用 cgroups。
2. 检查
/etc/docker/daemon.json
配置是否正确。
3. 尝试修改存储驱动为
overlay2
(在
daemon.json
中设置
"storage-driver": "overlay2"
)。
|
docker run hello-world
报错
exec format error
|
拉取的
hello-world
镜像架构与主机不匹配。
|
docker image inspect hello-world | grep -i arch
|
Docker 默认可能拉取 x86 镜像。显式指定 LoongArch 架构镜像:
docker run --platform linux/loong64 hello-world
。注意:需要该镜像支持多架构。
|
非 root 用户运行
docker ps
报权限错误
|
用户未加入
docker
组,或组权限未生效。
|
groups $USER
查看当前用户所在组。
|
1. 确保执行了
usermod -aG docker $USER
。
2. 必须注销后重新登录 ,或在新终端中测试。 |
| 拉取镜像速度极慢 | 未配置国内镜像加速器,或配置未生效。 |
docker info
查看
Registry Mirrors
是否为空。
| 按照第 7 节配置镜像加速器,并重启 Docker。 |
9. 生产环境最佳实践与建议
将 Docker 用于生产环境时,除了安装,还需要关注稳定性、安全性和可维护性。
9.1 版本与仓库管理
-
固定版本
:在生产环境中,不建议始终安装“最新版本”。在测试环境验证后,应在生产环境安装特定的稳定版本(如
docker-ce-29.5.1),并在dnf配置中排除该包的自动更新,以避免不可控的升级带来风险。 - 私有仓库 :考虑搭建私有镜像仓库(如 Harbor),用于存储经测试和批准的业务镜像,减少对公网的依赖,并提升拉取速度和安全性。
9.2 存储与日志管理
-
数据目录
:默认 Docker 数据目录(
/var/lib/docker)可能位于系统根分区。如果镜像和容器数据量大,建议在安装后,通过修改/etc/docker/daemon.json中的data-root参数,将其指向更大的独立磁盘分区。{ "data-root": "/data/docker" } -
日志轮转
:容器日志可能快速增长。配置 Docker 守护进程的日志驱动和轮转策略,防止日志占满磁盘。可以在
daemon.json中配置:{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
9.3 安全加固
- 用户命名空间 :考虑启用用户命名空间映射,以隔离容器内外的用户 UID,提升安全性。
- 安全扫描 :集成镜像安全扫描工具到 CI/CD 流程中,及时发现镜像中的漏洞。
-
限制资源
:使用
docker run的--memory,--cpus等参数,或通过编排工具(如 Kubernetes)限制容器的资源使用,防止单个容器耗尽主机资源。
9.4 监控与维护
- 监控 :将 Docker 主机和容器的指标(CPU、内存、网络、磁盘)纳入监控系统(如 Prometheus + Grafana)。
-
清理
:定期清理无用的镜像、容器、卷和网络,释放磁盘空间。可以设置定时任务执行
docker system prune -af(谨慎使用,确保不会删除需要的数据)。
通过本文的方法,你在龙芯 3B6000 上获得的不仅仅是一个 Docker 程序,而是一个与主流 Linux 发行版体验一致的、可持续维护的容器化环境。这为在国产化平台上构建现代化的、云原生应用栈打下了坚实可靠的基础。当仓库配置妥当后,后续所有关于 Docker 的升级、维护都将变得简单而规范。

587

被折叠的 条评论
为什么被折叠?



