当前位置: 首页 > news >正文

龙芯3B6000服务器手动安装Docker 29.5.1实战指南

最近在龙芯 3B6000 平台上部署容器化应用时,发现系统自带的 Docker 版本较低,无法满足一些新特性(如 BuildKit 的增强功能、容器资源管理改进等)的需求。尤其是在尝试运行某些依赖新版本 Docker 的 CI/CD 工具链或容器镜像时,版本兼容性问题就凸显出来。本文将详细记录在龙芯 3B6000 架构的服务器上,通过 RPM 包手动安装高版本 Docker 29.5.1 的完整过程,涵盖从环境检查、依赖解决、安装配置到验证测试的全链路,并针对龙芯平台可能遇到的特殊问题提供解决方案。无论你是正在将应用向国产化平台迁移的开发者,还是负责龙芯服务器运维的工程师,这篇实战指南都能帮你绕过坑点,顺利完成部署。

1. 背景与核心概念

在深入安装步骤之前,我们有必要厘清几个关键概念,这有助于理解为什么在龙芯平台上安装 Docker 需要特别的步骤。

Docker 是什么?Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个可移植的容器中。容器与传统虚拟机不同,它直接运行在宿主机的操作系统内核上,因此更加轻量、快速,并且能保证环境的一致性。Docker 29.5.1 是 Docker Engine 的一个较新版本,包含了对安全性、性能和管理功能的诸多改进。

RPM 包管理RPM(Red Hat Package Manager)是 Red Hat 系列 Linux 发行版(如 CentOS、Fedora、OpenAnolis、OpenEuler)标准的软件包管理格式。通过 RPM 包安装软件,可以自动处理依赖关系(尽管有时仍需手动解决),并方便地进行升级、查询和卸载。在无法直接使用yumdnf从官方仓库安装特定版本时,手动下载并安装 RPM 包是常见做法。

龙芯 3B6000 平台龙芯 3B6000 是龙芯中科推出的新一代桌面和服务器处理器,采用 LoongArch 指令集架构。这意味着其软件生态与常见的 x86_64 或 ARM 架构不同。虽然主流 Linux 发行版已逐步提供对 LoongArch 的原生支持,但许多软件的预编译二进制包(尤其是较新版本)可能不会直接提供,或者需要从特定的镜像源获取。因此,在龙芯平台上安装软件,特别是像 Docker 这样复杂的系统服务,需要关注架构兼容性和依赖库的完整性。

为什么需要手动安装高版本 Docker?

  1. 系统仓库版本滞后:许多针对龙芯适配的 Linux 发行版,其默认软件仓库中的 Docker 版本可能停留在较旧的稳定版(如 20.10.x)。
  2. 新特性需求:Docker 29.x 引入了 BuildKit 作为默认构建器、改进的docker compose集成、更细粒度的资源控制等功能,这些对于现代开发运维流程至关重要。
  3. 安全与合规:新版本通常包含重要的安全补丁和 CVE 修复。

本文将指导你完成在龙芯 3B6000 上获取并安装 Docker 29.5.1 的 RPM 包,并确保其稳定运行。

2. 环境准备与版本说明

在开始操作前,请确保你拥有一个龙芯 3B6000 服务器的操作权限(最好是 root 用户或具有 sudo 权限的账户)。

基础环境确认:

  1. 操作系统:本文以OpenAnolis OS 8.8(龙蜥)统信 UOS 服务器版等基于龙芯 LoongArch 架构的 Linux 发行版为例。其他发行版如 OpenEuler for LoongArch 步骤类似。
  2. 内核版本:Docker 对内核版本有要求。运行以下命令检查:
    uname -r
    输出应类似4.19.x或更高。建议使用 5.x 内核以获得更好的兼容性。
  3. 架构确认
    uname -m
    输出应为loongarch64,确认是龙芯架构。
  4. 已安装的旧版本 Docker:如果系统已安装旧版 Docker,建议先彻底卸载,避免冲突。
    sudo systemctl stop docker sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
  5. 安装必要工具:确保wgettargccmake等基础工具已安装。
    sudo yum install -y wget tar gcc make

目标版本说明:

  • Docker Engine: 29.5.1
  • 架构: loongarch64 (龙芯)
  • 包格式: RPM
  • 依赖: containerd, runc, docker-cli-plugins 等。

重要提示:由于龙芯生态的软件仓库更新节奏不一,Docker 29.5.1 的官方预编译 RPM 包可能无法直接从主流镜像站获取。通常我们需要从龙芯社区维护的镜像源、发行版提供的测试仓库,或者通过源码编译来获得。本文将假设我们能够从可靠的龙芯软件源找到对应的 RPM 包。

3. 配置龙芯架构的软件源

为了更方便地解决依赖关系,我们首先需要配置一个包含较新软件包的龙芯架构软件源。这里以配置 OpenAnolis 的龙芯镜像源为例。

  1. 备份原有的 YUM 源配置文件:

    sudo mkdir -p /etc/yum.repos.d/backup sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/null || true
  2. 创建新的 OpenAnolis LoongArch 源文件:

    sudo tee /etc/yum.repos.d/anolis.repo << 'EOF' [anolis-os] name=Anolis OS - $basearch baseurl=https://mirrors.openanolis.cn/anolis/$releasever/OS/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.openanolis.cn/anolis/RPM-GPG-KEY-ANOLIS [anolis-updates] name=Anolis OS - Updates baseurl=https://mirrors.openanolis.cn/anolis/$releasever/updates/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.openanolis.cn/anolis/RPM-GPG-KEY-ANOLIS [anolis-plus] name=Anolis OS - Plus baseurl=https://mirrors.openanolis.cn/anolis/$releasever/Plus/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.openanolis.cn/anolis/RPM-GPG-KEY-ANOLIS EOF

    注意:$releasever$basearch变量会被 yum 自动替换。对于 Anolis 8.8,$basearch应为loongarch64

  3. 清理并重建 YUM 缓存:

    sudo yum clean all sudo yum makecache
  4. 测试源是否可用,尝试搜索 containerd(Docker 的核心依赖):

    sudo yum search containerd

    如果能看到相关包,说明源配置成功。

4. 下载 Docker 29.5.1 RPM 包及其依赖

由于 Docker 29.5.1 可能不在默认的稳定仓库中,我们需要手动定位并下载 RPM 包。通常有以下几种途径:

  • 途径A:从发行版的测试或Plus仓库安装(如果提供)。
  • 途径B:从龙芯社区或第三方构建的镜像站下载
  • 途径C:从 Docker 官方 GitHub Release 的源码编译(最复杂)。

本文假设我们通过途径B,从一个已知的、为龙芯架构提供软件包的镜像站下载。在实际操作中,你需要根据当前可用的资源调整下载链接。

步骤:手动下载与依赖安装

  1. 安装yum-utils工具包,它提供的yumdownloader命令可以帮助我们下载 RPM 包及其依赖。

    sudo yum install -y yum-utils
  2. 尝试从配置的源中直接安装(如果仓库中有):

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

    执行后,查看安装的版本docker --version。如果版本低于 29.5.1,则继续下面的手动下载步骤。

  3. 手动下载指定版本的 RPM 包。我们需要知道确切的包名。对于龙芯架构,包名通常包含loongarch64后缀。例如:

    • docker-ce-29.5.1-1.el8.loongarch64.rpm
    • docker-ce-cli-29.5.1-1.el8.loongarch64.rpm
    • containerd.io-1.6.31-1.el8.loongarch64.rpm
    • docker-buildx-plugin-0.12.1-1.el8.loongarch64.rpm
    • docker-compose-plugin-2.24.3-1.el8.loongarch64.rpm

    你可以使用wget从可靠的 URL 下载。这里以示例 URL 格式展示(请注意,实际 URL 需要你根据当前可用的镜像站进行查找和替换):

    # 创建一个目录存放下载的包 DOWNLOAD_DIR=~/docker_rpms mkdir -p $DOWNLOAD_DIR cd $DOWNLOAD_DIR # 示例下载命令(URL需要替换为真实地址) # wget https://some-mirror.for.loongarch/docker/29.5.1/el8/loongarch64/stable/Packages/docker-ce-29.5.1-1.el8.loongarch64.rpm # wget https://some-mirror.for.loongarch/docker/29.5.1/el8/loongarch64/stable/Packages/docker-ce-cli-29.5.1-1.el8.loongarch64.rpm # wget https://some-mirror.for.loongarch/containerd/1.6.31/el8/loongarch64/stable/Packages/containerd.io-1.6.31-1.el8.loongarch64.rpm # ... 下载其他插件包 # 更实际的做法:如果镜像站配置了repo,可以用yumdownloader下载到当前目录而不安装 sudo yum install --downloadonly --downloaddir=$DOWNLOAD_DIR docker-ce-29.5.1 docker-ce-cli-29.5.1 containerd.io docker-buildx-plugin docker-compose-plugin

    如果yumdownloader找不到指定版本,说明仓库中没有。你必须通过网络搜索或联系发行版维护者获取这些 RPM 包的下载链接。

  4. 安装下载的 RPM 包。进入存放 RPM 包的目录,使用rpm命令或yum localinstall进行安装。后者能更好地处理本地包的依赖。

    cd $DOWNLOAD_DIR sudo yum localinstall -y *.rpm

    如果遇到依赖错误(例如缺少container-selinuxlibcgroup等),yum localinstall会提示。你需要根据提示,使用sudo yum install先安装这些缺失的依赖包,然后再重新执行sudo yum localinstall -y *.rpm

5. 配置与启动 Docker 服务

安装完成后,需要对 Docker 进行一些基本配置。

  1. 启动并设置开机自启

    sudo systemctl start docker sudo systemctl enable docker
  2. 验证 Docker 服务状态和版本

    sudo systemctl status docker docker --version docker compose version # 验证插件是否安装成功

    此时,docker --version应显示Docker version 29.5.1, build ...

  3. (可选)配置 Docker 镜像加速器。国内访问 Docker Hub 可能较慢,建议配置国内镜像源。编辑或创建 Docker 守护进程配置文件:

    sudo tee /etc/docker/daemon.json << 'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
    • registry-mirrors: 镜像加速器地址,可以添加多个。
    • exec-opts: 设置 cgroup 驱动为 systemd,与系统保持一致。
    • log-driverlog-opts: 配置日志。
    • storage-driver: 存储驱动,overlay2是推荐且常用的。
  4. 重新加载配置并重启 Docker

    sudo systemctl daemon-reload sudo systemctl restart docker

6. 运行测试与基本使用

安装配置完成后,必须进行测试以确保 Docker 正常工作。

  1. 运行经典测试容器

    sudo docker run --rm hello-world

    如果一切正常,你将看到来自 Docker 的 “Hello from Docker!” 欢迎信息。这证明 Docker 守护进程运行正常,并能从网络拉取镜像、创建并运行容器。

  2. 测试更复杂的操作(例如运行一个 Nginx 容器):

    # 拉取 nginx 镜像(注意:需要龙芯架构可用的镜像,或多架构镜像) sudo docker pull nginx:alpine # 运行一个临时容器,映射端口 sudo docker run --rm -d -p 8080:80 --name my-nginx nginx:alpine # 检查容器运行状态 sudo docker ps # 访问测试 (在另一终端或本机) curl http://localhost:8080 # 停止容器 sudo docker stop my-nginx

    重要提示:并非所有 x86_64 或 ARM 的 Docker 镜像都有对应的龙芯(LoongArch64)版本。你需要寻找明确支持linux/loong64平台的镜像。例如,许多基础镜像(如debianalpine)和流行软件(如nginxredis)的官方镜像已提供多架构支持,包含loong64。使用docker pull时,Docker 会自动选择匹配当前主机架构的镜像标签。

  3. 测试docker compose(如果已安装插件):

    mkdir ~/compose-test && cd ~/compose-test tee docker-compose.yml << 'EOF' version: '3.8' services: web: image: nginx:alpine ports: - "8080:80" redis: image: redis:alpine EOF sudo docker compose up -d sudo docker compose ps sudo docker compose down

7. 常见问题与排查思路

在龙芯平台上安装高版本 Docker,你可能会遇到一些特有或常见的问题。

问题现象可能原因排查与解决思路
sudo yum install docker-ce提示“没有可用软件包”1. 软件源未正确配置为 loongarch64。
2. 仓库中确实没有该版本的 Docker。
1. 检查/etc/yum.repos.d/下的 repo 文件,确认baseurl指向正确的龙芯架构镜像路径。
2. 使用yum search docker-ce查看仓库有哪些版本。
3. 考虑手动下载 RPM 包安装。
sudo yum localinstall *.rpm失败,提示依赖错误(如libseccomp >= 2.4系统自带的依赖库版本过低,不满足 Docker 29.5.1 的要求。1. 根据错误信息,尝试从龙芯软件源安装更高版本的依赖包(如sudo yum install libseccomp-2.5.x)。
2. 如果源中没有,可能需要手动编译安装该依赖,但这会提高复杂度。
3. 考虑寻找针对当前系统版本(如 el8)构建的、依赖要求更低的 Docker RPM 包。
sudo systemctl start docker失败,查看日志journalctl -xe -u docker发现错误1. 存储驱动不兼容(如overlay2所需的内核版本或文件系统不支持)。
2. 与现有容器运行时(如旧版 containerd)冲突。
3. SELinux 策略限制。
1. 检查内核版本uname -r和文件系统类型(df -T /var/lib/docker)。
2. 确保旧版 Docker/containerd 已彻底卸载(见环境准备步骤)。
3. 尝试临时禁用 SELinuxsetenforce 0后启动 Docker,如果成功,则需要配置正确的 SELinux 策略或将其设置为宽容模式(生产环境需谨慎)。
4. 检查/etc/docker/daemon.json配置是否有语法错误。
docker run hello-world失败,提示“exec format error”拉取的hello-world镜像架构与主机不匹配(可能是 x86_64 版本)。1. 显式指定龙芯架构的镜像标签,如docker pull --platform linux/loong64 hello-world
2. 确认镜像是否支持多架构:docker manifest inspect hello-world
3. 使用已知支持loong64的镜像进行测试,如docker pull cr.loongnix.cn/library/alpine:latest并运行。
Docker 命令执行慢,或拉取镜像超时网络连接问题,或默认 Docker Hub 镜像源在国内访问不畅。1. 按照第5步配置国内镜像加速器。
2. 检查防火墙设置,确保能访问外部网络和镜像仓库端口(通常是 HTTPS 443)。
3. 对于龙芯生态,可以尝试使用cr.loongnix.cn等国内龙芯镜像站。
docker compose命令未找到或报错docker-compose-pluginRPM 包未成功安装,或者安装的是独立的docker-compose(Python 版本)。1. 确认已安装docker-compose-plugin包:`rpm -qa

8. 最佳实践与工程建议

在龙芯生产环境中部署 Docker,除了完成安装,还需遵循一些最佳实践以确保稳定性、安全性和可维护性。

  1. 版本与源管理

    • 固定版本:在生产环境中,避免使用latest标签或频繁升级到最新版本。应明确记录所使用的 Docker Engine、containerd 以及所有插件的具体版本号(如本文的 29.5.1),便于环境一致性管理和故障回溯。
    • 使用内部镜像仓库:对于企业级应用,强烈建议搭建私有的 Docker 镜像仓库(如 Harbor),并将所有基础镜像和业务镜像推送至内网仓库。这可以加速部署,避免因外网波动导致部署失败,并增强安全性。
    • 维护专属 RPM 仓库:如果有多台龙芯服务器需要部署相同版本的 Docker,可以考虑在内部搭建一个 YUM/DNF 仓库,将下载好的 Docker 29.5.1 RPM 包及其依赖放入其中。这样其他服务器可以通过内网源快速、一致地安装。
  2. 配置优化

    • 日志轮转:在/etc/docker/daemon.json中配置的max-sizemax-file可以有效防止容器日志占满磁盘。
    • 存储路径:默认 Docker 数据存储在/var/lib/docker。如果该分区空间不足,可以考虑通过>
http://www.jsqmd.com/news/1099903/

相关文章:

  • PHP+VUE医疗预约系统毕业设计:全栈开发实战与部署指南
  • MultiFunPlayer完整指南:设备同步与媒体播放的终极解决方案
  • 新店起店怎么查抖音小店对标数据?蝉妈妈拆解头部4要点
  • Element Plus 级联选择器实战:仿学科网教材多级选择的完整方案
  • Java计算机毕设之基于 SpringBoot+Vue 的 4S 店客户跟进与购车管理系统的设计与实现 基于 SpringBoot+Vue 的汽车门店车辆(完整前后端代码+说明文档+LW,调试定制等)
  • 专访大晓机器人王飞:世界模型是“进化型基础设施”
  • 基于51/STM32单片机温度控制系统 恒温箱 水温控制 温度采集 成品1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • HarmonyOS律愈实战02:ArkTS五音数据模型设计
  • esp32s3+ws2812灯条控制
  • 公开课紧张到忘词?老教师都在用的3个临场应对方法
  • LeetCode 热题 100 —— 7.接雨水(Javascript解法)
  • 别再盲目试用了!AI编程助手采购决策树:按团队规模、语言栈、安全等级自动匹配最优组合(含SaaS/私有化/混合部署ROI计算表)
  • 2026 年有哪些真正适合学生写开题的 AI 辅助写作工具,实测无套路分享
  • 【VMware磁盘扩容终极指南】:20年运维专家亲授5种零宕机扩容方案,99%的人不知道第3种!
  • Antigravity Manager:把多个 AI 账号管明白的桌面工具
  • Debian 12 编译安装网讯网卡驱动详细教程
  • Dism++深度解析:现代化Windows系统维护架构与技术实现
  • SCI投稿AI绘图避坑全攻略:AI打草稿+人工转矢量,彻底告别撤稿风险!
  • 从H100的异步执行和线程块集群,聊聊如何榨干GPU的每一分算力
  • 2026年技术方向怎么选?机器视觉、PLC、AI大模型、嵌入式深度对比
  • 宝塔面板部署 Spring Boot 项目全流程
  • Python爬虫经典案例018:爬虫性能优化与调优——从慢到快的全面优化指南
  • VisualCppRedist AIO:终极Windows运行库一体化智能管理解决方案深度解析
  • 【open harmony/harmonyos】HarmonyOS 应用中的数据模型分层:以星图节点 Store 为例
  • 2026年论文查重免费网站靠谱吗?这5个平台实测对比
  • 基于STM32单片机智能窗帘窗户光敏定时遥控温湿度语音物联网设计1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 09502黄大年茶思屋榜文95期 第2题 高性能、适用于NPU硬件的Training-free大模型剪枝算法
  • openGauss 还原成功了,用户却喊“数据库里啥也没有“:一个 search_path 坑实录
  • 国家标准起草单位是什么?有什么价值?企业如何申请参与国标制定
  • Claude Code 深度实战指南:从环境配置到 Agent 自动化进阶