龙芯3B6000平台Docker 29.5.1安装部署与实战指南
2026/7/25 9:33:05 网站建设 项目流程

1. 为什么要在龙芯 3B6000 上装 Docker 29.5.1

如果你手头有龙芯 3B6000 的机器,不管是开发机、测试机还是生产环境的一部分,想在上面跑容器,那 Docker 几乎是绕不开的选择。但龙芯平台(LoongArch 架构)和常见的 x86_64 或 ARM64 环境不太一样,官方 Docker 仓库通常不直接提供预编译的二进制包。所以,标题里的“安装高版本 rpm Docker 29.5.1” 核心要解决的就是:在龙芯 3B6000 上,如何获取、安装并成功运行一个较新且稳定的 Docker Engine 版本

Docker 29.x 系列相比之前的 20.x、23.x 有不少变化,比如默认启用了 containerd 镜像存储后端、API 版本升级、移除了一些旧特性等。29.5.1 是一个修复了多个安全漏洞的版本,对于生产环境来说,选择它比直接用最新的 29.6.x 可能更稳妥一些,毕竟新版本可能引入未知的兼容性问题。

在龙芯上做这件事,关键点不在于 Docker 命令怎么用,而在于前置的依赖解决、包获取和安装后的验证。很多人卡在第一步:找不到包,或者安装后dockerd起不来。下面我就按实际操作的顺序,把从准备到验证的完整流程拆开讲清楚。

2. 安装前的环境确认与依赖准备

在动手下载任何 rpm 包之前,先花几分钟把系统环境理清楚,能避免一大半的“玄学”问题。

2.1 确认系统版本和架构

首先,连上你的龙芯 3B6000 机器,打开终端,运行以下命令:

uname -m cat /etc/os-release

对于龙芯 3B6000,uname -m应该会返回loongarch64。这是关键,意味着你要找的是loongarch64架构的 rpm 包,不是x86_64aarch64或者mips64(旧款龙芯3A是mips64)。

/etc/os-release会告诉你具体的发行版和版本号,比如是LoongnixUOSKylin还是基于 Fedora/CentOS 的衍生版。不同的发行版,其基础库、软件包命名和依赖关系可能有细微差别。我这次演示的环境是 Loongnix 20(基于 Fedora),但思路是通用的。

2.2 处理关键系统依赖

Docker 29.5.1 对系统内核和基础库有要求。先检查并安装必要的依赖:

# 1. 更新系统包缓存(如果是yum/dnf) sudo dnf makecache # 或 sudo yum makecache # 2. 安装基础依赖 sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 # 3. 确认关键库是否存在,例如 libseccomp rpm -qa | grep libseccomp # 如果没安装,则安装 sudo dnf install -y libseccomp

特别注意 libseccomp 版本:Docker 对 libseccomp 有最低版本要求(通常 >= 2.3)。可以用rpm -q libseccomp --info查看版本。如果系统自带的版本太低,可能需要从源码编译升级,这会是一个比较麻烦的依赖问题。

2.3 配置软件源(如果需要)

如果你的系统没有配置合适的软件源,可能连containerd.iodocker-ce-cli这些基础依赖都找不到。对于龙芯平台,通常需要添加针对loongarch64架构的 EPEL 源或厂商提供的扩展源。

例如,在 Loongnix 上,可以检查/etc/yum.repos.d/目录下的 repo 文件。如果缺少,可能需要联系系统提供商获取正确的源配置。这一步没有通用命令,完全取决于你的具体系统。

3. 获取与安装 Docker 29.5.1 rpm 包

这是最核心的一步。官方 Docker 仓库不提供 loongarch64 的包,所以通常有几种途径:

3.1 途径一:从系统厂商或社区仓库获取

这是最推荐、最稳妥的方式。许多针对龙芯的发行版(如 Loongnix、OpenKylin for LoongArch)的软件仓库里,可能已经打包好了 Docker。你可以直接用包管理器搜索:

dnf search docker-ce # 或 yum search docker-ce

如果找到了类似docker-ce-29.5.1-1.el9.loongarch64这样的包,直接安装即可:

sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

但请注意:仓库里的版本未必是 29.5.1,可能是 24.x 或其他版本。如果版本符合你的要求,这是最省事的方法。

3.2 途径二:寻找第三方构建的 rpm 包

如果系统仓库里没有,或者版本太旧,就需要去网上找第三方构建的包。这里需要非常小心来源的安全性。

  1. 搜索关键词:可以在搜索引擎或开源社区(如 Gitee、GitHub)搜索 “docker-ce loongarch64 rpm”、“龙芯 docker rpm 包”。

  2. 核对信息:找到包后,不要急着下。先看发布者、发布时间、下载量、是否有签名或哈希校验值。优先选择知名社区、厂商或活跃开发者发布的包。

  3. 下载与检查:假设你找到了一个名为docker-ce-29.5.1-1.loongarch64.rpm的包及其配套的docker-ce-clicontainerd.io包。

    # 下载包(示例,实际URL需替换) wget https://example.com/packages/loongarch64/docker-ce-29.5.1-1.loongarch64.rpm wget https://example.com/packages/loongarch64/docker-ce-cli-29.5.1-1.loongarch64.rpm wget https://example.com/packages/loongarch64/containerd.io-2.2.4-1.loongarch64.rpm # 安装前,强烈建议检查包的依赖关系 rpm -qpR docker-ce-29.5.1-1.loongarch64.rpm

    这个命令会列出这个 rpm 包依赖哪些其他的库或包。你需要确保你的系统能满足这些依赖。常见的依赖如systemd,libseccomp >= 2.3,container-selinux(如果开启了 SELinux)等。

3.3 途径三:从源码编译(最复杂,但最可控)

如果找不到现成的 rpm 包,或者对现有包不放心,最后的手段是自己从源码编译。这需要完整的开发环境和较长的时间。

  1. 准备编译环境

    sudo dnf groupinstall -y "Development Tools" sudo dnf install -y git go make gcc libseccomp-devel systemd-devel
  2. 获取 Docker 源码: Docker 的源码在github.com/moby/moby。你需要切换到v29.5.1这个 tag。

    git clone https://github.com/moby/moby.git cd moby git checkout v29.5.1
  3. 编译: Docker 使用 Go 语言编写,编译相对简单,但耗时较长,且对 Go 版本有要求(29.5.1 需要 Go 1.26+)。你需要先安装合适版本的 Go,然后设置GOARCH=loong64(注意,Go 语言对龙芯的标识是loong64,不是loongarch64)。

    export GOARCH=loong64 export GOOS=linux # 假设你的Go安装在 /usr/local/go export PATH=$PATH:/usr/local/go/bin # 在 moby 源码目录下执行编译 make binary

    编译成功后,产物在./bundles/binary-daemon/目录下,包括dockerddocker等二进制文件。

  4. 打包成 rpm(可选但推荐): 手动编译的二进制文件,管理起来不如 rpm 方便。你可以参考 Docker 官方或发行版的.spec文件,自己制作一个 rpm 包,或者直接将二进制文件拷贝到系统路径(如/usr/local/bin),并手动配置 systemd 服务单元。但这会失去包管理的依赖检查和自动更新能力。

我个人的建议是:优先尝试途径一(系统仓库),其次是途径二(可信的第三方包)。途径三(源码编译)是最后的保底方案,适合有定制化需求或深度集成的场景。

4. 安装步骤与关键配置

假设你已经通过途径一或二获得了docker-cedocker-ce-clicontainerd.io的 rpm 包。接下来进行安装。

4.1 执行安装命令

# 进入存放下载的rpm包的目录 cd /path/to/your/rpm/files # 使用 rpm 或 yum/dnf 本地安装 sudo rpm -ivh containerd.io-*.rpm sudo rpm -ivh docker-ce-cli-*.rpm sudo rpm -ivh docker-ce-*.rpm # 或者使用 yum/dnf 本地安装,可以自动解决依赖(如果仓库里有) # sudo dnf install -y ./*.rpm

安装过程中,注意观察终端输出,看是否有依赖缺失的报错。如果有,需要根据错误信息手动安装缺失的依赖包。

4.2 安装后的基础配置

安装完成后,不要急着启动服务。先做几个关键配置:

  1. 配置 Docker 守护进程(daemon.json): Docker 29.x 默认使用 containerd 作为镜像存储后端,这通常没问题。但我们可以创建一个配置文件来调整一些默认行为,比如镜像加速。

    sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" }, "storage-driver": "overlay2", "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } EOF
    • native.cgroupdriver=systemd:如果你的系统使用 systemd 管理 cgroup,建议设置此项。
    • storage-driver:在龙芯平台上,overlay2通常是兼容性最好的存储驱动。
    • registry-mirrors:添加国内镜像加速器,可以极大提升拉取镜像的速度。
  2. (可选)禁用 SELinux: 如果系统启用了 SELinux,而你对它不熟悉,在初期调试时可以先临时禁用,避免权限问题干扰判断。

    # 查看SELinux状态 getenforce # 如果返回 Enforcing,可以临时设置为 Permissive sudo setenforce 0 # 要永久禁用,需修改 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled,然后重启。

    注意:生产环境请根据安全策略谨慎处理 SELinux。

4.3 启动 Docker 服务并设置开机自启

# 重新加载 systemd 配置,使新的服务单元生效 sudo systemctl daemon-reload # 启动 docker 服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker # 检查服务状态 sudo systemctl status docker

如果status命令显示active (running),恭喜你,Docker 服务已经成功启动。如果失败,会显示具体的错误信息,这是下一步排查的关键。

5. 验证安装与基础功能测试

服务跑起来只是第一步,接下来要验证 Docker 的核心功能是否正常。

5.1 验证客户端和服务端版本

docker version

这个命令会输出客户端(Client)和服务端(Server)的版本信息。重点关注Server部分,确保Version29.5.1,并且OS/Arch显示为linux/loong64。如果Server部分显示Cannot connect to the Docker daemon,说明 dockerd 服务没有正常启动或当前用户没有权限。

5.2 运行一个最简单的测试容器

我们不用hello-world镜像(因为它可能没有 loong64 架构的版本),而是用一个小巧的、多架构支持好的busybox镜像来测试。

# 拉取 busybox 镜像(Docker会自动选择适合 loong64 的版本,如果存在) docker pull busybox # 运行一个交互式命令 docker run --rm busybox echo "Hello from LoongArch64 Docker!"

如果命令成功执行并打印出 “Hello from LoongArch64 Docker!”,说明 Docker 最基本的拉取镜像、创建容器、运行命令的功能都正常。

5.3 测试更复杂的功能:构建镜像

Docker 的核心价值之一是镜像构建。我们来测试一下docker build功能是否正常。

  1. 创建一个简单的Dockerfile

    mkdir ~/docker-test && cd ~/docker-test cat > Dockerfile <<EOF FROM alpine:latest RUN echo "构建于龙芯平台" > /hello.txt CMD cat /hello.txt EOF
  2. 尝试构建镜像:

    docker build -t loong-test:latest .

    这里有个关键点:alpine:latest镜像是否有linux/loong64的版本?如果没有,构建会失败,报错“no matching manifest for linux/loong64”。这时你需要找一个基础镜像支持 loong64,比如debian:bookworm-slimubuntu:jammy或者龙芯社区维护的基础镜像。

  3. 运行刚构建的镜像:

    docker run --rm loong-test:latest

    如果成功输出“构建于龙芯平台”,说明整个 Docker 的构建和运行流水线在你的龙芯机器上完全打通了。

6. 常见问题排查与解决思路

在龙芯平台上安装 Docker,遇到问题很正常。下面是一些典型问题的排查思路。

6.1 问题:dockerd服务启动失败

现象sudo systemctl status docker显示failed,或者journalctl -u docker --no-pager -n 50查看日志有错误。

排查步骤

  1. 检查依赖:首先看日志里有没有明显的“找不到动态库”(cannot open shared object file)的错误。这通常是因为 rpm 包依赖的某个库的版本与系统不符。需要手动安装或更新对应库。
  2. 检查存储驱动:Docker 29.x 默认可能尝试使用containerd镜像存储。如果之前系统有旧版本 Docker 数据,可能会有冲突。可以尝试在/etc/docker/daemon.json中显式指定"storage-driver": "overlay2",然后删除/var/lib/docker注意:这会删除所有现有镜像和容器!)再重启服务。
  3. 检查内核参数:运行sudo dockerd --validate可以检查一些内核配置。常见需要开启的内核模块和参数包括:
    • overlay模块:lsmod | grep overlay
    • br_netfilter模块:lsmod | grep br_netfilter
    • net.bridge.bridge-nf-call-iptables = 1等。 如果缺失,需要加载模块或修改sysctl.conf
  4. 检查 cgroup:确保系统使用 cgroup v2(现代发行版默认)或正确配置了 cgroup v1。Docker 29.x 对 cgroup v1 是 deprecated 状态,但还能用。

6.2 问题:docker pull失败,报错“no matching manifest”

现象:拉取镜像时提示no matching manifest for linux/loong64 in the manifest list entries

原因与解决:Docker 镜像是一个多架构的清单(manifest list)。如果该镜像的维护者没有为linux/loong64架构编译并推送镜像,你就拉取不到。这是龙芯平台目前最大的生态问题。

解决思路

  1. 寻找替代镜像:搜索支持linux/loong64的镜像。一些基础镜像(如debian,ubuntu,alpine)和大型项目(如nginx,redis)的官方镜像可能已经支持。可以用docker manifest inspect IMAGE_NAME:TAG命令(需要开启实验性功能)查看该镜像支持哪些架构。
  2. 自己构建:如果找不到,唯一的办法就是获取该软件的源码,在你的龙芯机器上编写Dockerfile进行编译和构建。这就是为什么在龙芯上玩 Docker,很多时候等于“从源码开始构建整个生态”。
  3. 使用--platform参数(不推荐)docker pull --platform linux/amd64 IMAGE_NAME可以强制拉取 amd64 的镜像,然后在龙芯上通过 QEMU 用户态模拟运行。但这会带来巨大的性能损失和兼容性问题,仅适用于测试,不适合生产。

6.3 问题:容器内网络异常或端口无法访问

现象:容器能启动,但无法连接外部网络,或者宿主机的端口映射不生效。

排查步骤

  1. 检查防火墙:龙芯发行版可能默认启用firewalldiptables。Docker 会操作 iptables/nftables 规则来管理网络。如果防火墙规则冲突,可能导致网络不通。可以尝试临时关闭防火墙测试:
    sudo systemctl stop firewalld sudo systemctl stop iptables # 或者,如果使用 nftables sudo systemctl stop nftables
    注意:生产环境应在防火墙中为 Docker 开放相应规则,而不是直接关闭。
  2. 检查内核转发:确保 IP 转发已开启。
    cat /proc/sys/net/ipv4/ip_forward # 应该返回 1。如果是0,则临时开启: sudo sysctl -w net.ipv4.ip_forward=1 # 永久生效,编辑 /etc/sysctl.conf,添加 net.ipv4.ip_forward = 1
  3. 检查 Docker 网络:运行docker network lsdocker network inspect bridge,查看默认的bridge网络配置是否正确。

6.4 问题:权限不足,需要 sudo

现象:每次运行docker命令都需要加sudo

解决:将当前用户加入docker用户组。

sudo groupadd docker # 如果 docker 组不存在 sudo usermod -aG docker $USER

重要:执行后,你需要完全注销并重新登录,或者新开一个终端,用户组变更才会生效。之后就可以不用sudo直接运行docker命令了。

7. 生产环境考量与后续建议

如果你的目标是在龙芯 3B6000 上部署生产服务,那么安装成功只是起点。

  1. 镜像来源管理:建立内部私有镜像仓库(如 Harbor)是几乎必须的。将你自己在龙芯上构建好的、经过测试的镜像推送到私有仓库,供集群内其他龙芯节点拉取。避免每次都从零开始构建。
  2. 监控与日志:确保 Docker 守护进程和容器的日志被正确收集(如配置log-driverjson-file并设置轮转,或直接发送到syslog/journald)。使用docker statscAdvisorPrometheus等工具监控容器资源使用情况。
  3. 安全加固
    • 非 root 用户运行:考虑使用 Rootless Docker 模式,但这在龙芯平台上的兼容性需要额外测试。
    • 镜像安全扫描:对拉取和构建的镜像进行漏洞扫描。
    • 限制资源:使用--memory,--cpus等参数限制容器的资源使用,避免单个容器耗尽主机资源。
    • 更新策略:关注 Docker 和 containerd 的安全更新。在龙芯平台上,这意味着你需要关注为你提供 rpm 包的社区或厂商是否有及时跟进上游的修复。
  4. 备份与恢复:定期备份/etc/docker配置目录和/var/lib/docker(如果是 overlay2 驱动)或/var/lib/containerd(如果是 containerd 存储)中的重要数据。了解如何通过备份恢复整个 Docker 环境。

在龙芯这样的非主流架构上维护 Docker 环境,稳定性比追新更重要。除非有明确的安全漏洞修复或必需的新功能,否则不建议频繁升级 Docker 主版本。每次升级前,务必在测试环境充分验证。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询