2. Nexus安装与基础配置:Docker部署Nexus3、管理员初始化、Blob Store与Repository创建
本章是Nexus实战的起点。你将通过Docker在3分钟内完成Nexus3的部署,随后完成管理员密码初始化、Blob Store创建以及Repository配置。这三步构成了Nexus仓库管理的“铁三角”:运行环境 → 存储后端 → 仓库实例。掌握本章内容后,你的Nexus即可接入CI/CD流水线,开始承载制品与SBOM证据。
2.1 Docker部署Nexus3
使用官方镜像 sonatype/nexus3:latest 是最快、最可复现的部署方式。以下命令将Nexus3运行在宿主机 8081 端口,数据持久化至本地卷 nexus-data。
# 创建持久化数据卷
docker volume create --name nexus-data
# 启动Nexus3容器
docker run -d \
--name nexus \
-p 8081:8081 \
-v nexus-data:/nexus-data \
sonatype/nexus3:latest
# 查看启动日志(等待约60秒,直到看到 "Started Sonatype Nexus")
docker logs -f nexus
docker logs -f nexus 实时观察,当出现 Started Sonatype Nexus OSS 字样时,表示服务已就绪。
部署完成后,访问 http://<宿主机IP>:8081 即可看到Nexus登录页面。默认管理员账号为 admin,初始密码存储在容器内的 /nexus-data/admin.password 文件中。
# 获取初始管理员密码
docker exec nexus cat /nexus-data/admin.password
2.2 管理员初始化
首次登录后,Nexus会强制引导你完成管理员初始化流程。该流程包含三个关键步骤:
- 修改默认密码:输入从
admin.password文件中获取的初始密码,然后设置新密码。 - 配置匿名访问:建议在内部网络环境中启用匿名只读访问,以便CI工具无需认证即可拉取制品;生产环境可根据安全策略关闭。
- 完成向导:点击“Finish”完成初始化,进入Nexus管理后台。
admin.password 文件,或确保该文件不会被外部访问。该文件包含明文初始密码,是攻击者的首要目标。
初始化完成后,管理后台的“设置”菜单将完全可用。此时可以开始配置存储后端与仓库。
2.3 Blob Store创建
Blob Store是Nexus的物理存储层,决定了制品文件的存放位置与存储策略。每个Repository必须关联一个Blob Store。Nexus支持多种Blob Store类型,最常用的是File类型(本地文件系统)和S3类型(对象存储)。
| Blob Store类型 | 适用场景 | 配置要点 |
|---|---|---|
| File | 单机部署、开发测试环境 | 指定本地路径(默认在 /nexus-data/blobs 下) |
| S3 | 生产集群、跨AZ高可用 | 配置AWS区域、Bucket名称、IAM凭证 |
| Group | 多Blob Store聚合 | 将多个File或S3 Blob Store组合为一个逻辑存储池 |
以下是通过管理后台创建File类型Blob Store的步骤:
- 登录Nexus管理后台,点击顶部菜单 设置(齿轮图标)→ Blob Stores。
- 点击 Create Blob Store,选择 File 类型。
- 填写 Name(例如
sbom-blob-store)和 Path(例如/nexus-data/blobs/sbom)。 - 点击 Create Blob Store 完成创建。
<用途>-blob-store 格式,例如 maven-releases-blob-store、npm-proxy-blob-store、sbom-evidence-blob-store。清晰的命名有助于后期维护与审计。
2.4 Repository创建
Repository是Nexus对外提供服务的逻辑单元,每个Repository必须指定格式(Format)、类型(Type)和关联的Blob Store。Nexus3支持三种Repository类型:
| 类型 | 用途 | 典型场景 |
|---|---|---|
| proxy | 代理远程仓库,缓存制品到本地 | 代理 Maven Central、npmjs.org、PyPI |
| hosted | 托管组织内部发布的制品 | 存放内部构建的 JAR、npm 包、Docker 镜像 |
| group | 将多个 proxy 和 hosted 仓库聚合为一个统一入口 | 合并多个 Maven 仓库为一个 URL 供开发者使用 |
以下以创建Maven hosted仓库和npm proxy仓库为例,演示完整配置流程。
2.4.1 创建 Maven Hosted 仓库
- 点击顶部菜单 设置 → Repositories → Create repository。
- 选择 maven2 (hosted) 格式。
- 填写以下关键字段:
- Name:
maven-releases - Version Policy:
Release(仅允许发布正式版本) - Layout Policy:
Strict(严格校验坐标格式) - Blob Store: 选择之前创建的
maven-releases-blob-store
- Name:
- 点击 Create repository 完成创建。
2.4.2 创建 npm Proxy 仓库
- 点击 设置 → Repositories → Create repository。
- 选择 npm (proxy) 格式。
- 填写以下关键字段:
- Name:
npm-proxy - Remote Storage:
https://registry.npmjs.org - Blob Store: 选择
npm-proxy-blob-store
- Name:
- 点击 Create repository 完成创建。
2.5 验证配置
创建完成后,可以通过以下方式验证仓库是否正常工作:
- 浏览器访问:在Nexus Web UI中点击仓库名称,查看“Browse”页面是否显示空内容(新仓库无制品)。
- API检查:使用
curl调用Nexus REST API 获取仓库列表。
# 使用API验证仓库列表(替换为你的admin密码)
curl -u admin:<你的密码> http://localhost:8081/service/rest/v1/repositories | jq .
如果返回的JSON中包含你创建的仓库名称,说明配置成功。至此,Nexus的安装与基础配置全部完成,下一阶段将进入制品上传与SBOM证据留存的核心实战。