30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近在整理团队内部的开发环境发现一个挺有意思的现象很多同事在龙芯平台上部署服务时第一反应还是“先找找有没有现成的二进制包”如果找不到就默认认为“这个平台可能还不支持”。尤其是在处理像 Nexus Repository Manager 这类需要特定架构 Docker 镜像的中间件时这种惯性思维尤为明显。今天要聊的就是在龙芯 3B6000 上部署 Nexus 这件事。表面上看这只是一个“安装软件”的步骤但背后牵扯到的是对 LoongArch 生态现状的理解、对 Docker 多架构镜像的认知以及如何在一个相对“小众”但正在快速发展的平台上构建稳定、可复用的基础设施。很多人觉得在龙芯上部署服务是件麻烦事其实很多时候麻烦的不是技术本身而是我们还没找到那条已经被社区趟平的路。1. 为什么在龙芯上部署 Nexus 不是“从零开始”提到龙芯LoongArch架构很多人的第一印象是“生态还在建设中”。这个判断部分正确但容易让人忽略一个关键事实生态建设不是从零开始而是在已有的庞大开源软件基础上进行架构适配和移植。对于 Nexus 这样的流行开源软件社区往往已经走在了前面。Nexus Repository Manager 是 Sonatype 公司开发的一款流行的仓库管理软件它不仅是 Maven 私服还能管理 Docker、npm、PyPI、NuGet 等几乎所有主流开发语言的包。在 x86_64 或 ARM64 架构上通过 Docker 部署 Nexus 几乎是标准操作。那么问题来了龙芯的 LoongArch64常简称为 loong64架构有现成的 Docker 镜像吗答案是肯定的。社区已经为我们准备好了。在开源社区特别是 Kubernetes 和云原生领域有一个活跃的kubernetes-loong64组织他们致力于为 LoongArch64 架构预构建各种常用的 Docker 镜像。其中就包括了nexus-loong64这个项目。这意味着我们不需要自己去从源码编译 Nexus那会是一个极其复杂的过程也不需要等待官方发布 loong64 版本直接使用社区维护的镜像即可。这揭示了一个在龙芯平台上工作的核心思路优先寻找社区移植成果而非重复造轮子。很多软件尤其是 Java 生态的Nexus 本身就是 Java 应用由于 JVM 的良好跨平台特性在 loong64 上运行的门槛比想象中低很多。难点往往在于其依赖的本地库Native Library和打包过程。而kubernetes-loong64/nexus-loong64项目已经解决了这些依赖和打包问题将成果封装成了一个开箱即用的 Docker 镜像。所以在龙芯 3B6000 上部署 Nexus 的第一步不是研究如何编译而是确认这个社区镜像的存在、版本和用法。这能节省你 90% 的时间和精力。2. 环境准备不止是安装 Docker在拉取镜像和运行容器之前我们需要一个准备好的龙芯 3B6000 服务器环境。这个过程和在其他 Linux 发行版上安装 Docker 类似但有一些架构特有的细节需要注意。2.1 系统与内核要求首先确保你的龙芯 3B6000 服务器运行的是较新的、支持 Docker 的操作系统。主流的选择包括 Loongnix龙芯社区发行版、UOS、麒麟等基于 LoongArch 的 Linux 发行版。以 Loongnix 为例你需要检查内核版本确保其支持容器所需的特性如 cgroups, namespaces。打开终端执行uname -a确认输出中包含loongarch64或loong64字样。同时建议内核版本不低于 4.19。2.2 安装 Docker Engine龙芯平台上的 Docker 安装推荐使用官方提供的静态二进制包或者通过发行版的包管理器安装。由于 Docker 官方并未直接提供 loong64 的安装包我们通常采用后者。对于 Debian/Ubuntu 系如 Loongnix# 1. 更新软件包索引 sudo apt update # 2. 安装必要的依赖包允许 apt 通过 HTTPS 使用仓库 sudo apt install -y ca-certificates curl gnupg lsb-release # 3. 添加 Docker 的官方 GPG 密钥注意这里使用的是通用GPG密钥实际安装由包管理器处理架构 # 由于架构特殊更稳妥的方式是使用发行版已适配的 Docker 包。 # 通常Loongnix 的源中已经包含了 docker.io 或 docker-ce 包。 # 4. 直接安装 docker.io社区版或 docker-ce企业版 sudo apt install -y docker.io或者如果你的系统源里有docker-cesudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后启动 Docker 服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker验证 Docker 是否安装成功并且识别出 loong64 架构sudo docker version sudo docker info | grep Architecture输出中的Architecture应该是loong64。2.3 配置 Docker 镜像加速器非必须但强烈推荐由于网络原因从 Docker Hub 拉取镜像可能较慢。虽然我们即将使用的 Nexus 镜像来自阿里云仓库但配置一个通用的国内镜像加速器对后续工作有益。编辑 Docker 守护进程配置文件sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://your-mirror.mirror.aliyuncs.com] # 替换为你的加速器地址如阿里云、腾讯云、中科大等提供的地址 } EOF修改后重启 Docker 服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker注意在龙芯平台上确保你使用的镜像加速器支持或能够代理loong64架构的镜像拉取请求。一些公共加速器可能对非 x86/arm 架构支持不完整如果遇到拉取失败可以尝试暂时关闭加速器直接拉取。3. 部署 Nexus一行命令与一个 Compose 文件有了 Docker 环境部署 Nexus 就变得非常简单。社区提供了两种主要方式直接使用docker run命令或者使用更易于管理的docker-compose方式。我们更推荐后者因为它能清晰地定义服务配置并且方便后续的维护和版本升级。3.1 获取社区镜像我们使用的镜像是registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/nexus3-loong64:3.93.1。这个镜像托管在阿里云镜像仓库国内访问速度较快。它基于kubernetes-loong64/nexus-loong64项目的成果构建。你可以先尝试拉取镜像验证网络和镜像可用性sudo docker pull registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/nexus3-loong64:3.93.1拉取成功后使用docker images命令查看应该能看到一个loong64架构的镜像。3.2 使用 Docker Compose 部署推荐创建一个专门的工作目录例如~/nexus-loongarch然后在该目录下创建docker-compose.yml文件。version: 3.8 services: nexus: image: registry.cn-qingdao.aliyuncs.com/xuxiaoweicomcn/nexus3-loong64:3.93.1 container_name: nexus-loong64 restart: unless-stopped ports: - 8081:8081 # 主 Web UI 端口 - 8443:8443 # HTTPS 端口如果配置了SSL - 48500-48550:48500-48550 # 用于 Docker 仓库的端口范围 volumes: - nexus-data:/nexus-data environment: - INSTALL4J_ADD_VM_PARAMS-Xms1024m -Xmx2048m -XX:MaxDirectMemorySize1024m networks: - nexus-net volumes: nexus-data: driver: local networks: nexus-net: driver: bridge关键配置解释镜像 (image): 指定了我们拉取的 loong64 架构 Nexus 镜像。端口映射 (ports):8081:8081: Nexus 的 Web 管理界面和 API 端口。8443:8443: 如果后续配置了 HTTPS会用到此端口。48500-48550:48500-48550:这是一个重要配置。当 Nexus 作为 Docker 私有仓库时它需要一组端口来服务docker push/pull操作。这里映射了一个端口范围。数据卷 (volumes): 将容器内的/nexus-data目录挂载到 Docker 管理的名为nexus-data的持久化卷上。这保证了 Nexus 的配置、仓库数据在容器重启或重建后不会丢失。环境变量 (environment): 这里设置了 JVM 运行参数。-Xms1024m -Xmx2048m设置了堆内存初始值和最大值。对于生产环境或仓库数据量大的情况你可能需要根据服务器物理内存调整这些值例如-Xms2g -Xmx4g。网络 (networks): 创建了一个独立的桥接网络nexus-net为未来可能添加的其他服务如反向代理提供隔离的网络环境。3.3 启动与初始化在docker-compose.yml文件所在目录执行以下命令启动服务sudo docker-compose up -d-d参数表示在后台运行。首次启动 Nexus 需要一些时间一两分钟来初始化数据。你可以通过日志观察启动过程sudo docker-compose logs -f nexus-loong64当你看到日志中出现类似Started Sonatype Nexus OSS 3.93.1-01的信息时说明服务已经启动就绪。3.4 获取初始管理员密码Nexus 首次启动后会生成一个随机的管理员密码存放在数据卷中。我们需要进入容器内部查看这个文件。# 进入容器 sudo docker exec -it nexus-loong64 bash # 查看密码文件内容 cat /nexus-data/admin.password复制输出的一长串随机密码。退出容器输入exit。现在打开浏览器访问http://你的服务器IP:8081。使用用户名admin和刚才复制的密码登录。登录后系统会强制你修改密码、设置是否允许匿名访问等。请务必设置一个强密码并根据团队安全策略决定是否允许匿名访问学习环境可以允许生产环境建议关闭。至此一个运行在龙芯 3B6000 上的 Nexus 仓库管理器就已经部署完成了。4. 核心配置让它真正为你所用部署成功只是第一步。要让 Nexus 在团队开发流程中发挥作用还需要进行一些关键配置。否则它只是一个“能访问的网页”而已。4.1 配置 Docker 私有仓库这是 Nexus 最常用的功能之一。在 Nexus 中可以创建多种类型的仓库我们以创建 Docker 私有仓库为例。创建 Blob 存储在 Nexus 管理界面点击顶部齿轮图标进入“设置” - “Repository” - “Blob Stores”点击“Create Blob Store”。选择“File”类型命名为docker-hosted名称可自定。这为 Docker 镜像文件创建了一个存储空间。创建 Docker 仓库进入“设置” - “Repository” - “Repositories”点击“Create repository”。选择仓库类型为docker (hosted)。这是用于存储你自己构建并推送的镜像的私有仓库。名称docker-hosted。HTTP: 填写一个端口例如48500。这个端口必须在我们之前docker-compose.yml中映射的端口范围48500-48550之内。勾选 “Allow anonymous docker pull” 是否允许匿名拉取根据安全需求决定。Blob store: 选择刚才创建的docker-hosted。点击“Create repository”保存。同理你还可以创建docker (proxy)类型仓库来代理 Docker Hub 或其它公共仓库加速拉取创建docker (group)类型仓库将多个仓库如 hosted 和 proxy组合成一个统一的访问入口。4.2 配置客户端访问要在其他机器上向这个私有仓库推送或拉取镜像需要在 Docker 客户端进行配置。编辑客户端的 Docker 守护进程配置文件通常是/etc/docker/daemon.json添加你的 Nexus 服务器地址到insecure-registries中因为默认使用 HTTP。如果 Nexus 配置了 HTTPS 证书则不需要此步骤且更安全。{ insecure-registries: [你的服务器IP:48500] }重启客户端的 Docker 服务。然后你就可以使用标准的docker tag和docker push命令了# 标记一个本地镜像 docker tag my-local-image:latest 你的服务器IP:48500/my-project/my-image:1.0 # 推送镜像到私有仓库 docker push 你的服务器IP:48500/my-project/my-image:1.0 # 从私有仓库拉取镜像 docker pull 你的服务器IP:48500/my-project/my-image:1.04.3 配置其他类型仓库Maven, npm, PyPI等Nexus 的强大之处在于其多格式支持。配置流程大同小异在“Repositories”页面创建对应类型的仓库如maven2 (hosted),npm (hosted),pypi (hosted)等。在对应的构建工具中配置仓库地址。Maven: 在项目的pom.xml或全局的settings.xml中配置distributionManagement和repository。npm: 使用npm config set registry http://你的服务器IP:8081/repository/npm-hosted/命令。pip: 在~/.pip/pip.conf中配置index-url。4.4 性能与维护调优JVM 参数如前所述在docker-compose.yml中调整-Xms和-Xmx参数使其与服务器内存匹配。监控容器内存使用情况docker stats避免因内存不足导致 Nexus 进程被系统杀死。存储空间定期检查nexus-data卷的磁盘使用情况。Nexus 的存储清理策略可以在管理界面的“Tasks”中配置例如定期删除过时的快照Snapshot。备份最直接的备份方式就是备份整个nexus-data卷对应的目录通过docker volume inspect查找Mountpoint。也可以使用 Nexus 内置的备份功能“Administration” - “System” - “Backup”。5. 避坑指南与进阶思考在龙芯平台上部署和运维 Nexus除了通用问题还有一些架构和生态相关的点需要特别注意。5.1 可能遇到的问题与排查容器启动失败提示exec format error原因这几乎可以肯定是架构不匹配。你运行的 Docker 镜像不是为loong64构建的。解决确认你拉取和使用的镜像标签明确支持loong64。使用docker inspect 镜像名 | grep Architecture检查镜像架构。Nexus 启动极慢或卡住原因首次启动需要解压和初始化大量文件。另外JVM 堆内存设置过小或服务器磁盘 I/O 慢也会导致此问题。解决耐心等待首次启动。通过docker-compose logs -f观察日志是否在持续输出。检查服务器磁盘空间和 I/O 性能。适当增加-Xms和-Xmx的值。Docker 客户端无法推送/拉取报http: server gave HTTP response to HTTPS client原因Docker 客户端默认要求仓库使用 HTTPS而我们的私有仓库是 HTTP。解决在客户端 Docker 配置中正确添加insecure-registries如 4.2 节所述并重启 Docker 服务。端口冲突原因8081,8443或48500-48550范围内的端口被宿主机其他进程占用。解决修改docker-compose.yml中的端口映射例如将8081:8081改为18081:8081。注意修改后访问地址也要相应变化。5.2 关于镜像版本与维护我们使用的3.93.1版本是一个社区移植的特定版本。你需要关注上游更新Sonatype 官方会发布新版本的 Nexus。社区项目kubernetes-loong64/nexus-loong64可能会跟进移植新版本。定期查看其 GitHub 仓库获取新版本镜像。升级策略升级 Nexus 版本时务必先备份nexus-data卷。然后修改docker-compose.yml中的镜像标签为新版本执行docker-compose pull拉取新镜像最后docker-compose up -d重启服务。Nexus 通常支持跨版本升级但建议在测试环境先验证。5.3 安全加固建议禁用匿名访问在生产环境进入“Security” - “Anonymous”取消勾选“Allow anonymous access”。创建专属用户不要长期使用admin账户进行日常操作。为不同团队或用途创建具有最小必要权限的用户和角色。启用 HTTPS为 Nexus 配置 SSL/TLS 证书将访问协议从 HTTP 升级为 HTTPS。这需要修改 Nexus 内部配置并将docker-compose.yml中的端口映射调整为443:8443等同时 Docker 客户端也不再需要insecure-registries。网络隔离通过防火墙规则限制只有内部开发网络或 CI/CD 服务器可以访问 Nexus 的服务端口8081, 48500-48550等。5.4 在龙芯生态中的定位在龙芯平台上成功运行 Nexus其意义超出了部署一个工具本身。它证明了Java 生态的兼容性复杂的 Java 应用可以平滑迁移到 LoongArch。容器技术的可行性Docker 和容器化部署在龙芯上完全可行是统一开发、测试、部署环境的有力工具。基础设施自主化团队可以基于龙芯服务器构建从代码编译、依赖管理Nexus、到应用部署Docker镜像的完整、自主的内部工具链减少对外部 x86/ARM 基础设施的依赖。这个过程的关键在于转变思路——从“龙芯缺软件”的被动心态转向“在龙芯生态中寻找和整合解决方案”的主动实践。kubernetes-loong64这样的社区项目就是宝贵的资源地图。部署 Nexus 只是一个起点用同样的思路你可以在龙芯上搭建起 GitLab、Jenkins、数据库等一整套现代化研发平台。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度