30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度在国产化替代和信创浪潮下龙芯平台的应用部署成为许多开发者和运维工程师必须面对的课题。Docker 作为现代应用部署的基石其高版本如 29.5.1带来了性能提升、安全加固和新特性支持但在龙芯 3B6000 这类 LoongArch 架构的平台上通过官方仓库直接安装 Docker 通常无法获取到最新版本甚至可能没有预编译的二进制包。本文将手把手带你完成在龙芯 3B6000 服务器上通过 RPM 包离线或在线方式成功安装 Docker Engine 29.5.1 版本的全过程涵盖从环境准备、依赖解决、安装配置到验证测试的每一个步骤并针对龙芯平台可能遇到的特殊问题提供解决方案。1. 环境准备与系统确认在开始安装之前必须确保你的龙芯 3B6000 服务器环境符合 Docker 29.5.1 的基本要求。Docker Engine 29.x 系列对系统内核和基础库有特定要求尤其是在 LoongArch 架构上。1.1 系统与架构确认首先登录你的龙芯 3B6000 服务器确认操作系统版本和 CPU 架构。# 查看系统版本信息 cat /etc/os-release # 查看内核版本 uname -r # 确认 CPU 架构 uname -m对于龙芯 3B6000uname -m应该输出loongarch64。这是 LoongArch 64 位架构的标识。Docker 官方并未为 LoongArch 提供预编译的二进制包因此我们需要通过其他方式获取或编译适用于该架构的 RPM 包。常见的龙芯操作系统发行版包括 Loongnix基于 Fedora、UOS、麒麟等它们大多使用 RPM 包管理系统。本文以 Loongnix 或类似基于 Fedora 的发行版为例。1.2 内核要求与检查Docker 29.5.1 对 Linux 内核有最低要求并且需要一些特定的内核模块启用。运行以下命令检查当前内核配置# 检查内核版本是否满足要求 (建议 4.x 以上最好 5.10) uname -r # 检查必要的内核模块是否加载 lsmod | grep -E overlay|br_netfilter|veth|bridge # 检查 cgroup 支持 grep cgroup /proc/filesystems # 检查 namespaces 支持 ls /proc/self/ns/如果overlay、br_netfilter等模块未加载可能需要手动加载或确保内核编译时包含了它们。对于龙芯平台确保你使用的是较新的、为服务器优化过的内核通常发行版会提供。1.3 安装基础依赖在安装 Docker 之前需要确保系统已安装必要的工具和库。# 更新系统包管理器具体命令可能因发行版而异以下是 yum/dnf 示例 sudo dnf update -y # 或 sudo yum update -y # 安装基础工具和依赖 sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 curl wget # 安装较新版本的 iptables如果使用 iptables 作为防火墙后端 sudo dnf install -y iptables iptables-services # 对于 Docker 29.xcontainerd 是必须的运行时但高版本 Docker RPM 通常会作为依赖包含。 # 我们也可以预先安装 containerd.io如果仓库有 # 注意龙芯架构的仓库可能不直接提供需要从源码编译或寻找第三方构建。2. 获取 Docker 29.5.1 RPM 包由于 Docker 官方仓库不直接提供 LoongArch 架构的 RPM 包我们需要通过以下几种方式之一获取2.1 方案一从源码编译推荐用于生产环境这是最可靠但最复杂的方式。你需要一台龙芯 3B6000 的编译机并准备好编译环境。# 1. 安装 Go 语言环境 (Docker 29.5.1 要求 Go 1.24请根据 release notes 确认) # 从 Go 官网或龙芯社区获取 LoongArch64 的 Go 安装包 wget https://golang.google.cn/dl/go1.26.4.linux-loong64.tar.gz # 示例版本请检查 Docker 29.5.1 实际要求的 Go 版本 sudo tar -C /usr/local -xzf go1.26.4.linux-loong64.tar.gz echo export PATH$PATH:/usr/local/go/bin ~/.bashrc source ~/.bashrc go version # 2. 安装其他编译依赖 sudo dnf install -y make gcc git libseccomp-devel systemd-devel glibc-static btrfs-progs-devel libdmmp-devel # 3. 克隆 Docker (Moby) 源码 git clone https://github.com/moby/moby.git cd moby # 切换到 v29.5.1 标签 git checkout tags/v29.5.1 # 4. 编译 Docker 守护进程 (dockerd) 和客户端 (docker) # 注意编译过程可能需要较长时间且内存消耗较大 make binary # 编译成功后二进制文件位于 ./bundles/binary-daemon/ 和 ./bundles/binary-client/编译完成后你需要手动打包成 RPM或者直接使用二进制文件安装。打包 RPM 需要额外的rpmbuild知识和 spec 文件这里不展开。更简单的方式是使用编译好的二进制直接替换或制作成 systemd 服务。2.2 方案二使用第三方预编译仓库或社区构建一些国内的龙芯社区或厂商可能会维护 Docker 的 LoongArch 构建。你可以尝试添加这些仓库。注意使用第三方仓库存在安全风险请确保来源可信。以下是一个示例添加一个假设的社区仓库实际操作前请核实仓库地址和 GPG 密钥# 示例添加社区仓库请替换为真实可信的仓库地址 sudo tee /etc/yum.repos.d/docker-loongarch.repo -EOF [docker-loongarch] nameDocker CE for LoongArch - $basearch baseurlhttps://mirrors.example.com/docker-ce/linux/loongarch/stable/$basearch enabled1 gpgcheck1 gpgkeyhttps://mirrors.example.com/docker-ce/linux/loongarch/gpg EOF # 清理并重建缓存 sudo dnf clean all sudo dnf makecache # 搜索 Docker 包 sudo dnf search docker-ce如果仓库中有docker-ce-29.5.1或docker-engine-29.5.1之类的包可以直接安装。2.3 方案三下载离线 RPM 包并手动安装如果你已经从可信渠道如内部构建服务器、合作伙伴获得了适用于 LoongArch64 的 Docker 29.5.1 RPM 包及其依赖可以手动安装。假设你已将以下 RPM 包下载到/opt/docker-rpms/目录docker-ce-29.5.1-1.loongarch64.rpm(主包)docker-ce-cli-29.5.1-1.loongarch64.rpm(CLI 工具)containerd.io-2.2.5-1.loongarch64.rpm(containerd 运行时版本需匹配)docker-ce-rootless-extras-29.5.1-1.loongarch64.rpm(可选rootless 模式)docker-compose-plugin-2.x.x-1.loongarch64.rpm(可选Compose 插件)安装命令如下# 进入 RPM 包目录 cd /opt/docker-rpms/ # 使用 rpm 或 yum/dnf 本地安装 # 方法A使用 rpm 安装但需要手动解决依赖 sudo rpm -ivh *.rpm # 方法B使用 yum/dnf 本地安装可以自动解决本地文件间的依赖 sudo dnf localinstall *.rpm如果遇到依赖错误你需要根据提示安装缺少的依赖包例如container-selinux,libcgroup,libseccomp等。这些包通常可以从你的系统发行版仓库中安装。3. 安装 Docker Engine 29.5.1这里我们以方案一编译后手动部署和方案三离线 RPM 安装的混合场景为例提供一个更通用的安装流程。假设你已经通过某种方式获得了适用于 LoongArch64 的docker-ce-29.5.1系列 RPM 包。3.1 安装 ContainerdDocker 29.x 默认使用 containerd 作为容器运行时。如果 RPM 包没有将其作为依赖自动安装你需要先安装它。# 查找或下载 containerd.io 的 LoongArch64 RPM 包 # 假设包名为 containerd.io-2.2.5-1.loongarch64.rpm sudo rpm -ivh containerd.io-2.2.5-1.loongarch64.rpm # 启动并启用 containerd 服务 sudo systemctl enable --now containerd # 验证 containerd 状态 sudo systemctl status containerd3.2 安装 Docker Engine 和 CLI# 安装 Docker Engine (dockerd) 和 Docker CLI (docker) # 注意安装顺序cli 可能依赖 engine或者它们在一个包内 sudo rpm -ivh docker-ce-29.5.1-1.loongarch64.rpm docker-ce-cli-29.5.1-1.loongarch64.rpm # 或者使用 dnf localinstall 一次性安装所有相关包 sudo dnf localinstall docker-ce-*.rpm docker-ce-cli-*.rpm3.3 启动 Docker 服务# 启动 Docker 守护进程 sudo systemctl start docker # 设置 Docker 服务开机自启 sudo systemctl enable docker # 检查 Docker 服务状态 sudo systemctl status docker如果服务启动失败使用sudo journalctl -u docker --no-pager -f查看详细日志进行排查。4. 配置与优化安装完成后需要进行一些基本配置以适应生产环境需求。4.1 配置 Docker 守护进程Docker 的主要配置文件是/etc/docker/daemon.json。如果文件不存在可以创建它。sudo tee /etc/docker/daemon.json -EOF { exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 }, storage-driver: overlay2, storage-opts: [ overlay2.override_kernel_checktrue ], data-root: /var/lib/docker, registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ], insecure-registries: [], live-restore: true, default-ulimits: { nofile: { Name: nofile, Soft: 65536, Hard: 65536 } } } EOF配置项解释exec-opts: [native.cgroupdriversystemd]使用 systemd 来管理容器的 cgroup与系统集成更好。log-driver: json-file和log-opts配置日志驱动和滚动策略防止日志占满磁盘。storage-driver: overlay2指定存储驱动overlay2是推荐且性能较好的驱动。registry-mirrors配置国内镜像加速器可以大幅提升拉取镜像的速度。live-restore: true允许在 Docker 守护进程重启时保持容器运行提高可用性。default-ulimits设置容器的默认文件描述符限制避免某些应用报Too many open files错误。4.2 重载配置并重启 Docker# 重新加载 systemd 配置 sudo systemctl daemon-reload # 重启 Docker 服务使配置生效 sudo systemctl restart docker # 再次检查状态 sudo systemctl status docker4.3 将用户加入 Docker 组可选为了避免每次使用docker命令都需要sudo可以将当前用户加入docker组。# 将当前用户加入 docker 组 sudo usermod -aG docker $USER # 注意你需要退出当前终端并重新登录或者使用以下命令刷新组信息 newgrp docker安全提示docker组权限相当于 root因为 Docker 守护进程以 root 身份运行。请仅将可信用户加入该组。5. 验证安装与基本测试安装配置完成后需要进行全面的验证确保 Docker 在龙芯平台上正常工作。5.1 验证 Docker 版本和架构# 检查 Docker 客户端和服务器版本 docker version # 检查 Docker 系统信息确认架构 docker info | grep -E Architecture|OSType|Kernel Version|Server Version在docker info的输出中你应该能看到Architecture: loongarch64和OSType: linux。5.2 运行第一个容器Hello World# 拉取一个 LoongArch64 架构的 hello-world 镜像进行测试 # 注意Docker Hub 上官方 hello-world 镜像可能没有 loongarch64 变体。 # 我们可以尝试拉取一个多架构镜像中支持 loongarch64 的或者使用一个已知支持的小镜像如 busybox。 # 尝试拉取 busybox 镜像它通常提供多架构支持 docker pull busybox:latest # 查看拉取的镜像架构 docker image inspect busybox:latest --format{{.Architecture}} # 运行一个简单的测试容器 docker run --rm busybox:latest echo Hello, LoongArch Docker 29.5.1!如果busybox:latest没有loongarch64变体你会收到一个错误提示no matching manifest for linux/loongarch64 in the manifest list entries。这说明该镜像没有为龙芯架构提供构建。5.3 测试 LoongArch64 原生镜像为了真正验证 Docker 在龙芯上的运行能力我们需要一个为linux/loongarch64平台构建的镜像。你可以尝试从一些提供龙芯架构镜像的仓库拉取。# 示例尝试拉取龙芯社区维护的镜像假设存在 # docker pull cr.loongnix.cn/library/nginx:loongarch64 # 如果找不到可以尝试从 Docker Hub 上寻找明确支持多架构的镜像并指定平台。 # 但请注意很多镜像可能没有 loongarch64 的构建。 # 一个更可靠的方法是运行一个基于当前系统的小镜像 # 创建一个简单的 Dockerfile 来构建一个测试镜像 cat EOF Dockerfile.test FROM scratch COPY hello.txt / CMD [cat, /hello.txt] EOF echo Hello from LoongArch64 container! hello.txt # 构建镜像 docker build -t loong-test -f Dockerfile.test . # 运行容器 docker run --rm loong-test如果以上步骤成功说明 Docker 引擎本身工作正常。5.4 测试容器网络与存储# 测试网络运行一个容器并测试网络连通性 docker run --rm busybox:latest ping -c 4 8.8.8.8 # 测试存储挂载宿主机目录到容器 mkdir -p /tmp/docker-test echo Data from host /tmp/docker-test/host-file.txt docker run --rm -v /tmp/docker-test:/data busybox:latest cat /data/host-file.txt6. 常见问题与故障排除在龙芯平台上安装高版本 Docker 可能会遇到一些特殊问题。6.1 依赖包缺失或版本冲突问题现象使用rpm -ivh安装时提示error: Failed dependencies: ... is needed by ...。解决方案使用dnf或yum的localinstall命令它们能更好地解析本地 RPM 文件的依赖关系。根据错误信息从系统仓库或龙芯软件源安装缺少的依赖包。例如sudo dnf install -y libseccomp container-selinux iptables libcgroup如果依赖包版本过高或过低可能需要寻找特定版本的 RPM或者考虑从源码编译整个依赖链。6.2 内核模块不支持或参数错误问题现象Docker 服务启动失败日志中提示overlayfs相关错误或failed to create network bridge。解决方案检查内核模块确保overlay、br_netfilter等模块已加载。sudo modprobe overlay sudo modprobe br_netfilter永久加载模块创建/etc/modules-load.d/docker.conf文件内容为overlay br_netfilter调整内核参数创建/etc/sysctl.d/docker.conf文件内容如下然后执行sudo sysctl --system生效。net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 16.3 镜像拉取失败架构不匹配问题现象docker pull时报错no matching manifest for linux/loongarch64。解决方案使用多架构镜像寻找明确支持linux/loongarch64的镜像。可以关注cr.loongnix.cn龙芯镜像站或国内其他为龙芯提供镜像的仓库。自行构建镜像这是最根本的解决方案。你需要为你的应用编写 Dockerfile并在龙芯机器上构建镜像。# 示例构建一个简单的 Nginx 镜像 cat EOF Dockerfile.nginx FROM cr.loongnix.cn/loongnix/nginx:latest AS builder # ... 你的构建步骤 ... FROM cr.loongnix.cn/loongnix/nginx:latest COPY --frombuilder /path/to/app /usr/share/nginx/html EOF docker build -t my-nginx:loongarch64 -f Dockerfile.nginx .使用docker buildx跨平台构建如果你有 AMD64 的构建机可以使用buildx为linux/loongarch64构建镜像并推送到仓库然后在龙芯机器上拉取。但这需要配置构建器和支持多架构的镜像仓库。6.4 Docker 服务启动失败cgroup 相关问题问题现象systemctl status docker显示失败日志中有cgroup相关错误。解决方案确保系统使用cgroup v2Docker 29.x 推荐。检查方法stat -fc %T /sys/fs/cgroup/ # 如果输出 cgroup2fs则是 cgroup v2如果是 tmpfs则是 cgroup v1。如果使用cgroup v1在/etc/docker/daemon.json中可能需要明确指定cgroupdriver为cgroupfs但请注意Docker 29.x 已开始弃用 cgroup v1。{ exec-opts: [native.cgroupdrivercgroupfs] }确保/sys/fs/cgroup挂载正确。对于 systemd 系统通常不需要手动干预。6.5 性能问题或容器内应用异常问题现象容器可以运行但内部应用性能极差或出现段错误Segmentation Fault。解决方案检查镜像架构确保容器内的二进制文件是 LoongArch64 编译的。运行docker exec container uname -m确认容器内看到的架构。如果镜像是为amd64或arm64构建的通过 QEMU 用户态模拟运行会非常慢且可能不稳定。禁用用户态模拟如果你不小心拉取了非loongarch64的镜像Docker 可能会尝试通过binfmt_misc和 QEMU 来运行。对于生产环境建议只运行原生镜像。可以检查是否安装了qemu-user-static之类的包并考虑移除。调整存储驱动如果 I/O 性能差可以尝试在/etc/docker/daemon.json中将storage-driver改为overlay2已经是默认并确保文件系统如 XFS 或 EXT4支持d_typeoverlay2必需。# 检查文件系统是否支持 d_type xfs_info / | grep ftype # 对于 XFSftype 应为 1 # 或 tune2fs -l /dev/your_partition | grep features # 对于 EXT4查看是否有 metadata_csum 和 64bit通常都支持。7. 生产环境最佳实践与安全建议在龙芯服务器上部署 Docker 生产环境除了通用最佳实践外还需注意架构特殊性。7.1 镜像管理与构建建立私有镜像仓库鉴于公网上 LoongArch64 镜像稀缺强烈建议搭建私有镜像仓库如 Harbor并将在龙芯机器上构建好的应用镜像推送上去供集群内其他龙芯节点拉取。使用多阶段构建在 Dockerfile 中使用多阶段构建可以确保最终镜像只包含运行所需的 LoongArch64 二进制文件减小镜像体积。明确指定平台在Dockerfile的FROM指令中尽量使用带有-loongarch64标签的基础镜像或使用--platform参数。# 好的做法 FROM cr.loongnix.cn/loongnix/openjdk:11-jdk-loongarch64 AS builder # ... 构建步骤 FROM cr.loongnix.cn/loongnix/openjdk:11-jre-loongarch64 COPY --frombuilder /app/target/*.jar /app.jar CMD [java, -jar, /app.jar]7.2 安全加固非 Root 用户运行容器在 Dockerfile 中使用USER指令指定非 root 用户运行应用进程。限制容器资源使用--memory,--cpus等参数限制容器资源使用防止单个容器耗尽主机资源。使用安全扫描工具定期对自建的 LoongArch64 镜像进行安全漏洞扫描。可以集成 Clair、Trivy 等工具到你的 CI/CD 流程中。审计 Docker 守护进程配置auditd规则记录 Docker 守护进程和关键文件如/var/lib/docker,/etc/docker的访问事件。# 示例 audit 规则 sudo tee /etc/audit/rules.d/docker.rules -EOF -w /var/lib/docker -k docker -w /etc/docker -k docker -w /usr/bin/docker -k docker -w /usr/bin/dockerd -k docker EOF sudo service auditd restart7.3 监控与日志配置日志驱动和轮转如前文daemon.json配置使用json-file驱动并设置合理的max-size和max-file防止日志占满磁盘。集成监控系统将 Docker 和容器指标接入 Prometheus Grafana。Docker 守护进程本身提供了 metrics 接口需要配置--metrics-addr也可以使用cAdvisor来收集容器指标。健康检查在 Dockerfile 或docker run命令中为容器定义HEALTHCHECK确保应用可用性。7.4 网络与存储规划使用自定义网络避免使用默认的bridge网络为不同应用创建独立的 Docker 网络提高隔离性和可管理性。docker network create --driver bridge my_app_net docker run --network my_app_net --name app1 my-image:loongarch64持久化存储对于数据库等有状态服务务必使用 Docker Volume 或绑定挂载bind mount将数据持久化到宿主机。避免将数据存储在容器内部。# 创建命名卷 docker volume create my_db_data docker run -v my_db_data:/var/lib/mysql mysql:loongarch64 # 或使用绑定挂载 docker run -v /host/path:/container/path my-image:loongarch648. 总结与后续步骤通过以上步骤你应该已经在龙芯 3B6000 服务器上成功安装并配置了 Docker Engine 29.5.1。整个过程的核心挑战在于获取适用于 LoongArch64 架构的 Docker 二进制包或从源码编译。一旦 Docker 环境就绪你就可以像在其他架构上一样享受容器化带来的部署便利性和环境一致性。后续你可以进一步探索Docker Compose使用docker-compose或 Docker CLI 内置的compose插件来管理多容器应用。容器编排如果有多台龙芯服务器可以考虑部署 Kubernetes 集群。目前已有社区在推进 K8s 对 LoongArch 架构的支持。CI/CD 集成将龙芯 Docker 构建节点集成到你的 CI/CD 流水线中实现应用的自动构建、测试和部署。龙芯生态正在快速发展随着软件适配的不断完善在 LoongArch 平台上运行现代化容器化应用的体验会越来越顺畅。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度