龙芯3B6000平台Docker部署Jenkins实战:国产架构CI/CD解决方案

📅 2026/7/25 6:39:21
龙芯3B6000平台Docker部署Jenkins实战:国产架构CI/CD解决方案
这次我们来看一个在国产龙芯 3B6000 平台上使用 Docker 部署 Jenkins 的实战方案。对于使用龙芯架构的开发者或运维人员来说如何在非 x86 的生态中搭建一套稳定、高效的 CI/CD 流水线是一个很实际的需求。本文将直接切入主题带你完成从 Docker 安装、Jenkins 容器化部署到基础功能验证的全过程。龙芯 3B6000 采用 LoongArch 指令集其软件生态正在快速完善。通过 Docker 部署 Jenkins可以充分利用容器化的隔离性和可移植性简化环境配置实现与 x86 平台相近的持续集成体验。整个过程的核心在于解决龙芯架构下的 Docker 安装、镜像适配以及 Jenkins 服务的稳定运行。如果你手头有龙芯 3B6000 设备并希望搭建自己的自动化构建环境这篇文章提供的步骤可以直接复用。1. 核心能力速览在龙芯 3B6000 上通过 Docker 运行 Jenkins其核心价值在于为国产平台提供了一套标准化的 CI/CD 解决方案。下表概括了本次部署的关键信息能力项说明目标平台龙芯 3B6000 (LoongArch 架构)核心组件Docker 29.5.1 (社区版), Jenkins (官方镜像或适配镜像)部署方式Docker 容器化部署非原生安装管理界面Jenkins Web UI (默认端口 8080)主要功能项目构建、自动化测试、流水线 (Pipeline)、插件生态资源需求依赖 Docker 运行资源Jenkins 本身对 CPU 和内存有一定要求建议 2GB 以上内存。适合场景为运行在龙芯平台上的 Java、Python、Go 等项目提供持续集成与持续部署能力。技术门槛需要具备基础的 Linux 操作和 Docker 使用知识。2. 适用场景与使用边界在龙芯 3B6000 上部署 Jenkins主要服务于特定的开发与运维场景。它非常适合龙芯原生应用开发团队需要为 LoongArch 架构的软件项目搭建自动化构建、测试流水线。软件适配与迁移团队在将软件从 x86/ARM 向龙芯平台迁移的过程中利用 Jenkins 自动化完成编译、打包和基础测试。教育或研究机构在龙芯实验环境中为学生或研究人员提供一套标准的 CI/CD 实践平台。内部工具链建设为内部使用的、部署在龙芯服务器上的工具或服务建立自动化发布流程。需要注意的边界插件兼容性并非所有 Jenkins 插件都经过 LoongArch 架构的充分测试部分插件可能因依赖原生库而无法工作。建议优先使用核心插件和经过广泛验证的常用插件。构建代理Agent如果构建任务非常复杂或需要特殊环境可能需要配置基于龙芯架构的 Jenkins Agent 节点。这同样涉及 Agent 软件在龙芯上的兼容性问题。性能考量相比于主流 x86 服务器在龙芯平台上进行大规模、高并发构建时需要合理评估任务调度和资源分配避免单个节点负载过重。镜像来源直接使用jenkins/jenkins:lts官方镜像可能无法在 LoongArch 上运行需要寻找或构建适配的镜像。3. 环境准备与前置条件开始之前请确保你的龙芯 3B6000 服务器满足以下基础条件。操作系统推荐使用较新的龙芯社区发行版或中标麒麟、统信 UOS 等针对龙芯优化的操作系统。本文以通用 Linux 操作为例具体命令可能因发行版包管理器不同而略有差异。系统更新首先更新系统软件包列表确保环境最新。sudo apt update sudo apt upgrade -y # 或者对于 yum/dnf 系 # sudo yum update -y依赖安装安装 Docker 所需的基础工具。sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release网络与存储确保服务器可以访问外部网络以下载 Docker 安装包和 Jenkins 镜像。规划好 Docker 的工作目录如/var/lib/docker和 Jenkins 的数据持久化目录如/home/jenkins_home确保有足够的磁盘空间。4. Docker 安装与配置这是最关键的一步。由于龙芯是 LoongArch 架构无法直接使用 Docker 官方为 x86_64 或 ARM64 提供的二进制包和镜像仓库。4.1 安装 Docker根据网络搜索材料中提到的信息在龙芯 3B6000 上可以通过添加针对 LoongArch 的 Docker 仓库来安装较高版本如 29.5.1。以下是一种通用安装思路添加 Docker 的 GPG 密钥和仓库源具体仓库地址需根据龙芯社区或发行版提供的源进行配置# 示例添加仓库实际URL需要替换为龙芯可用的Docker CE仓库 curl -fsSL https://download.docker.com/linux/loongarch/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ deb [archloongarch64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/loongarch \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null请注意上述https://download.docker.com/linux/loongarch地址可能不存在。实际操作中你需要寻找由龙芯社区、发行版厂商或第三方维护的 Docker CE for LoongArch 仓库。例如某些社区源可能位于http://pkg.loongnix.cn/docker-ce/或类似地址。安装 Docker Enginesudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin验证安装sudo docker --version # 预期输出类似Docker version 29.5.1, build 12345 sudo systemctl start docker sudo systemctl enable docker sudo docker run hello-world如果hello-world镜像能成功运行并输出欢迎信息说明 Docker 引擎安装成功。但hello-world镜像也需要有 LoongArch 版本否则会报架构错误。你可能需要先拉取一个已知支持 LoongArch 的轻量级镜像如busybox:latest如果其支持多架构进行测试。4.2 配置 Docker 镜像加速器为了提升拉取镜像的速度特别是后续拉取可能存在的 LoongArch 适配镜像时建议配置国内镜像加速器。编辑 Docker 守护进程配置文件sudo tee /etc/docker/daemon.json -EOF { “registry-mirrors”: [“https://your-mirror.mirror.aliyuncs.com“] # 替换为你的加速器地址例如阿里云、腾讯云等提供的龙芯架构加速器需确认支持 “exec-opts”: [“native.cgroupdriversystemd”], “log-driver”: “json-file”, “log-opts”: { “max-size”: “100m” }, “storage-driver”: “overlay2” } EOF重启 Docker 服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker5. 获取与运行 Jenkins 镜像标准的jenkins/jenkins镜像不支持 LoongArch。我们需要找到或构建一个能在该架构上运行的 Jenkins 镜像。5.1 方案一使用社区构建的适配镜像这是最快捷的方式。关注龙芯开源社区或国内镜像仓库寻找标签中包含loongarch64的 Jenkins 镜像。例如假设我们找到了一个镜像registry.example.com/jenkins:lts-loongarch64。拉取镜像sudo docker pull registry.example.com/jenkins:lts-loongarch64运行 Jenkins 容器sudo docker run -d \ --name my-jenkins \ -p 8080:8080 \ -p 50000:50000 \ -v /home/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ --restart unless-stopped \ registry.example.com/jenkins:lts-loongarch64参数解释-d: 后台运行。--name: 容器名称。-p 8080:8080: 将容器内 Jenkins Web 界面端口映射到宿主机。-p 50000:50000: 用于 Jenkins Agent 连接的端口。-v /home/jenkins_home:/var/jenkins_home:关键将容器内的 Jenkins 数据目录挂载到宿主机实现数据持久化。确保/home/jenkins_home目录存在且 Jenkins 进程有写入权限通常需要chown -R 1000:1000 /home/jenkins_home。-v /var/run/docker.sock:/var/run/docker.sock: 允许 Jenkins 容器使用宿主机的 Docker 引擎用于在 Pipeline 中运行 Docker 命令。--restart unless-stopped: 设置容器自动重启策略。5.2 方案二自行构建 Jenkins 镜像备选如果找不到现成镜像可以考虑基于 LoongArch 的基础镜像如loongnix/loongnix:latest自行构建。这需要编写 Dockerfile。创建 Dockerfile# 使用LoongArch基础镜像 FROM loongnix/loongnix:latest # 安装必要的依赖如 Java (Jenkins 需要) RUN yum install -y java-11-openjdk-devel wget git # 下载 Jenkins WAR 包 ARG JENKINS_VERSION2.440.3 RUN wget https://get.jenkins.io/war-stable/${JENKINS_VERSION}/jenkins.war -O /usr/share/jenkins/jenkins.war # 创建 Jenkins 用户和目录 RUN useradd -d /var/jenkins_home -u 1000 -m -s /bin/bash jenkins RUN mkdir -p /usr/share/jenkins/ref RUN chown -R jenkins:jenkins /usr/share/jenkins /var/jenkins_home # 暴露端口 EXPOSE 8080 50000 # 以 Jenkins 用户运行 USER jenkins ENTRYPOINT [“java”, “-jar”, “/usr/share/jenkins/jenkins.war”]构建镜像sudo docker build -t my-jenkins-loongarch:latest .使用自定义镜像运行容器命令同方案一将镜像名替换为my-jenkins-loongarch:latest。6. 初始化与访问 Jenkins无论采用哪种镜像方案容器启动后都可以通过以下步骤完成 Jenkins 的初始化。检查容器状态sudo docker ps | grep my-jenkins # 应看到容器状态为 Up sudo docker logs my-jenkins # 查看日志等待出现 “Jenkins is fully up and running” 或类似信息访问 Web 界面 在浏览器中访问http://你的龙芯服务器IP:8080。解锁 Jenkins 首次访问会要求输入初始管理员密码。该密码在容器日志或挂载的数据卷中。# 从容器日志中获取推荐 sudo docker logs my-jenkins 21 | grep -A 2 “Please use the following password” # 或从挂载的数据卷中获取 cat /home/jenkins_home/secrets/initialAdminPassword安装推荐插件 在初始化向导中选择“安装推荐的插件”。由于架构特殊插件下载过程可能会比在 x86 上慢甚至个别插件安装失败。如果失败可以稍后在 Jenkins 管理界面中重试或手动安装。创建管理员账户 按照提示创建第一个管理员用户。配置实例 URL 保持默认或根据你的网络环境设置。7. 基础功能验证与配置成功进入 Jenkins 主界面后需要进行一些基础验证和配置确保其能在龙芯平台上正常工作。7.1 验证系统信息点击 Jenkins 首页的 “Manage Jenkins” - “System Information”。查看 “System Properties” 中的os.arch和os.name属性。os.arch应该显示为loongarch64这确认了 Jenkins 运行在正确的架构上。7.2 测试自由风格项目构建这是验证 Jenkins 核心构建功能是否正常的最简单方法。新建任务点击 “New Item”输入任务名称如test-loongarch-build选择 “Freestyle project”点击 OK。配置构建步骤在任务配置页面向下滚动到 “Build Steps” 部分。添加构建步骤点击 “Add build step”选择 “Execute shell”。输入测试命令在命令框中输入以下内容这些命令可以验证龙芯环境的基本状态echo “ 系统架构信息 ” uname -a echo “ Java 版本 ” java -version echo “ Docker 信息 ” docker --version echo “ 当前目录 ” pwd echo “ 测试构建创建一个文件 ” echo “Hello from LoongArch Jenkins!” hello_loongarch.txt cat hello_loongarch.txt保存并立即构建保存配置回到项目页面点击 “Build Now”。查看控制台输出点击构建历史中的构建编号如 #1再点击 “Console Output”。你应该能看到上述命令的执行结果确认所有命令都成功执行并且uname -a的输出包含loongarch64。7.3 安装必要插件根据你的实际需求安装插件。对于龙芯环境建议优先安装以下核心或常用插件并注意观察安装是否成功Pipeline: 用于定义流水线。Git: 用于从 Git 仓库拉取代码。Docker Pipeline: 如果在 Pipeline 中使用 Docker。SSH Agent: 用于远程执行命令。安装路径“Manage Jenkins” - “Plugins” - “Available plugins”。搜索并安装。8. 配置 Docker 集成Pipeline 中使用 Docker如果你需要在 Jenkins Pipeline 中构建或运行 Docker 镜像例如为你的龙芯应用构建容器镜像需要确保 Jenkins 能够调用宿主机的 Docker。验证 Docker 套接字挂载在之前运行容器的命令中我们已经添加了-v /var/run/docker.sock:/var/run/docker.sock。这步是关键。在 Jenkins 中配置 Docker 工具可选对于声明式 Pipeline 的docker指令进入 “Manage Jenkins” - “Tools”。找到 “Docker Installations”点击 “Add Docker”。命名如Host DockerDocker Hub URL可以留空或填写镜像加速器地址。重要取消勾选 “Install automatically”。因为我们使用的是宿主机 Docker无需 Jenkins 自动安装。在 “Tool Location” 中填写 Docker 客户端在容器内的路径通常是/usr/bin/docker这取决于你的 Jenkins 镜像内是否安装了 Docker 客户端。如果镜像内没有你可能需要在构建自己的镜像时安装docker-cli。测试 Docker Pipeline新建一个 “Pipeline” 类型的任务。在 Pipeline 脚本中尝试一个简单的 Docker 命令pipeline { agent any stages { stage(‘Test Docker’) { steps { script { // 查看 Docker 版本 sh ‘docker --version’ // 列出镜像验证连接 sh ‘docker images’ // 运行一个简单的 LoongArch 兼容的容器例如 busybox sh ‘docker run --rm busybox:latest echo “Hello from inside a container on LoongArch!”‘ } } } } }运行该 Pipeline观察控制台输出确认 Docker 命令能成功执行。9. 资源占用与性能观察在龙芯 3B6000 上运行 Jenkins需要关注其资源使用情况。容器资源监控# 查看容器运行状态和资源占用概览 sudo docker stats my-jenkins # 查看容器内进程详情 sudo docker top my-jenkins重点关注CPU %、MEM USAGE / LIMIT、MEM %这几列。Jenkins 主进程Java本身会消耗一定内存内存占用会随着安装插件数量、并发构建任务数增加而上升。宿主机资源观察# 查看宿主机整体资源使用 top # 或使用 htop (如果已安装) htop在 Jenkins 执行构建任务时观察 CPU 和内存的使用率变化。Jenkins 系统监控在 Jenkins Web 界面的 “Manage Jenkins” - “System Information” 页面底部有 “Memory Usage” 图表可以查看 JVM 堆内存使用情况。在 “Manage Jenkins” - “Monitor” 可以查看线程、磁盘使用等更详细的信息。性能调优建议JVM 参数如果 Jenkins 运行缓慢或频繁 Full GC可以调整容器环境变量来设置 JVM 参数。例如在docker run命令中添加-e JAVA_OPTS“-Xmx2048m -Xms512m”来调整堆内存大小。构建执行器数量在 “Manage Jenkins” - “System” - “# of executors” 中根据龙芯 CPU 的核心数合理设置。不建议设置超过物理核心数避免过度竞争。数据目录 I/O确保 Jenkins 数据卷 (/home/jenkins_home) 挂载在 I/O 性能较好的磁盘上。10. 常见问题与排查方法在龙芯架构上部署 Jenkins 可能会遇到一些特有或常见的问题。问题现象可能原因排查方式解决方案docker pull失败提示no matching manifestDocker 官方仓库没有 LoongArch 架构的镜像。docker pull命令的错误信息。1. 寻找第三方支持 LoongArch 的镜像仓库。2. 自行构建镜像。Jenkins 容器启动后立即退出1. 端口冲突。2. 数据卷挂载目录权限错误。3. 基础镜像或启动命令有问题。sudo docker logs my-jenkins查看退出前的日志。1. 检查端口 8080、50000 是否被占用。2. 确保数据卷目录存在且对 UID 1000 有读写权限 (chown -R 1000:1000 /home/jenkins_home)。3. 检查 Dockerfile 或启动命令中的ENTRYPOINT/CMD。Web 界面无法访问1. 防火墙未开放端口。2. 容器未成功启动。3. 宿主机 IP 错误。1.sudo docker ps确认容器状态。2. sudo netstat -tlnpgrep :8080 查看端口监听。3. 检查宿主机防火墙规则。插件安装失败或极慢1. 网络问题无法连接 Jenkins 更新中心。2. 插件与 LoongArch 架构不兼容较少见。1. 查看插件管理页面的错误信息。2. 检查 Jenkins 日志 (/var/jenkins_home/logs或容器日志)。1. 更换 Jenkins 更新中心镜像源在插件高级设置中。2. 手动下载插件.hpi文件后离线安装。3. 对于不兼容插件寻找替代方案或等待更新。Pipeline 中 Docker 命令执行失败1. 容器内未安装 Docker 客户端。2./var/run/docker.sock挂载权限问题。3. 用户组权限问题。1. 在容器内执行docker version测试。2. 检查宿主机docker.sock的权限 (ls -l /var/run/docker.sock)。1. 确保 Jenkins 镜像包含docker-cli或修改镜像安装它。2. 将 Jenkins 容器内的用户UID 1000添加到宿主机的docker组需在宿主机执行sudo usermod -aG docker username并重启。更简单的做法是在运行容器时使用-u root不推荐生产环境。3. 确保挂载的docker.sock可被容器内进程访问。构建任务中的编译/测试失败构建工具链如 gcc, maven, npm在龙芯环境下存在兼容性问题或未安装。查看具体构建任务的“控制台输出”日志。1. 在 Jenkins 任务中通过 shell 步骤预先安装龙芯平台所需的构建依赖。2. 使用预先配置好环境的 Docker 镜像作为构建环境需该镜像支持 LoongArch。3. 检查软件源码是否支持 LoongArch 架构的交叉编译或本地编译。11. 最佳实践与使用建议为了在龙芯 3B6000 上稳定、高效地使用 Docker 化 Jenkins遵循以下实践会大有裨益。镜像与数据持久化使用特定标签镜像明确使用为loongarch64构建的 Jenkins 镜像标签避免使用latest等浮动标签以保证环境一致性。务必数据卷挂载必须将/var/jenkins_home挂载到宿主机目录这是 Jenkins 所有配置、任务、插件数据的生命线。定期备份此目录。分离数据与日志可以考虑将 Jenkins 日志目录也挂载出来方便排查问题-v /home/jenkins_logs:/var/log/jenkins。安全与权限避免容器内 root 运行Jenkins 官方镜像默认使用jenkins用户UID 1000。保持此设置除非有特殊必要。谨慎挂载 Docker Socket-v /var/run/docker.sock:/var/run/docker.sock赋予了容器很高的权限。仅在确实需要在 Pipeline 中构建/运行 Docker 容器时才使用。在生产环境中可以考虑使用更安全的替代方案如 Jenkins Docker 插件配合独立的 Docker Agent。网络隔离考虑为 Jenkins 容器创建自定义的 Docker 网络而不是默认的bridge。性能与稳定性限制容器资源使用docker run的-m、-cpus等参数限制容器可用的最大内存和 CPU防止单个容器耗尽宿主机资源。配置 JVM 参数通过环境变量JAVA_OPTS为 Jenkins 的 JVM 设置合适的堆内存大小如-Xmx4g -Xms1g根据物理内存调整。定期清理在 Jenkins 系统设置中配置构建历史保留策略并定期使用docker system prune清理无用的 Docker 镜像、容器和卷释放磁盘空间。备份与恢复制定定期备份/home/jenkins_home目录的策略。备份 Jenkins 的全局配置config.xml和任务配置jobs/目录。恢复时只需将备份的数据目录覆盖到新的数据卷然后启动一个使用相同镜像的 Jenkins 容器即可。在龙芯平台上部署现代化工具链是对其生态建设的一次具体实践。通过 Docker 部署 Jenkins我们成功地将一个广泛使用的 CI/CD 工具引入了 LoongArch 环境。整个过程的关键在于解决基础软件Docker的安装和镜像的架构适配问题。一旦 Jenkins 服务成功跑起来其强大的插件体系和 Pipeline 能力就能为龙芯平台的软件开发和运维工作提供与 x86 平台几乎一致的自动化体验。建议在投入生产前充分测试你的具体构建流水线确保所有依赖和工具在龙芯架构下都能正常工作。