news 2026/3/31 4:01:43

Docker 搭建Nexus3私服

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 搭建Nexus3私服

一、Nexus 简介

Nexus Repository Manager 3(简称Nexus3)是Sonatype公司推出的一款仓库管理工具,主要用于存储、管理和分发:

  • Maven(Java)依赖
  • Docker 镜像
  • npm(Node.js)包
  • PyPI(Python)包
  • NuGet(.NET)包
  • APT(Debian)包
  • Yum(RPM)包
  • Go 模块
  • 等多种开发语言的组件

二、Nexus 核心概念

2.1 仓库类型

Nexus3的仓库类型主要分为三大类:代理仓库(Proxy Repository)、宿主仓库(Hosted Repository)和仓库组(Repository Group)。

  1. 代理仓库(Proxy Repository)

    • 作用:作为远程仓库的缓存代理,提高访问速度并减少外部网络流量。
    • 特点:
      • 缓存远程仓库内容
      • 支持负缓存(缓存404响应)
      • 可设置缓存策略
    • 配置示例(Maven代理仓库):
      {"name":"maven-central","type":"proxy","format":"maven2","url":"https://repo.maven.apache.org/maven2","storage":{"blobStoreName":"default","strictContentTypeValidation":true},"proxy":{"remoteUrl":"https://repo.maven.apache.org/maven2","contentMaxAge":1440,"metadataMaxAge":1440},"negativeCache":{"enabled":true,"timeToLive":1440},"httpClient":{"blocked":false,"autoBlock":true,"connection":{"retries":0,"userAgentSuffix":"Nexus","timeout":60,"enableCircularRedirects":false,"enableCookies":false}}}
  2. 宿主仓库(Hosted Repository)

    • 作用:存储企业内部生成的制品。
    • 子类型:
      • 发布仓库(Releases):存储稳定版本
      • 快照仓库(Snapshots):存储开发中版本
      • 混合仓库(Mixed):同时支持发布和快照
    • 配置示例:
      {"name":"maven-releases","type":"hosted","format":"maven2","online":true,"storage":{"blobStoreName":"default","writePolicy":"ALLOW_ONCE",// 防止覆盖"strictContentTypeValidation":true},"cleanup":{"policyNames":["weekly-cleanup"]},"maven":{"versionPolicy":"RELEASE",// RELEASE, SNAPSHOT 或 MIXED"layoutPolicy":"STRICT"// STRICT 或 PERMISSIVE}}
  3. 仓库组(Repository Group)

    • 作用:聚合多个仓库,提供统一的访问入口。
    • 特点:
      • 虚拟仓库,不实际存储内容
      • 可包含代理、宿主或其他组仓库
      • 按顺序搜索成员仓库
    • 配置示例:
      {"name":"maven-public","type":"group","format":"maven2","online":true,"storage":{"blobStoreName":"default","strictContentTypeValidation":true},"group":{"memberNames":["maven-releases","maven-snapshots","maven-central","third-party"]}}

2.2 仓库格式支持

Nexus3 支持多种包管理格式:

  • Maven 仓库

    # 配置示例maven-central(proxy)# Maven中央仓库代理maven-releases(hosted)# 内部发布版本maven-snapshots(hosted)# 内部快照版本maven-public(group)# 聚合所有Maven仓库
  • Docker 仓库

    # 类型docker-hosted# 存储内部Docker镜像docker-proxy# 代理Docker Hub/Registrydocker-group# 聚合多个Docker仓库# 配置要点- 需要配置HTTP/HTTPS端口 - 支持Blob存储优化 - 可配置清理策略
  • NPM 仓库

    # 类型npm-proxy# 代理npm官方仓库npm-hosted# 存储私有npm包npm-group# 聚合npm仓库# 使用示例npmconfigsetregistry http://nexus:8081/repository/npm-group/

三、Docker 部署 Nexus3

3.1 拉取镜像

# 拉取 Nexus3 官方镜像docker pull sonatype/nexus3:latest

3.2 创建挂载目录

# 创建数据目录(用于持久化存储mkdir-p /usr/local/src/nexus/nexus-datachmod777/usr/local/src/nexus/nexus-data

3.3 运行容器

  • 基础运行命令

    # 最简单的方式docker run -d --name nexus3 -p8081:8081 sonatype/nexus3# 推荐方式(挂载数据卷)docker run -d\--name nexus3\-p8081:8081\-v nexus-data:/nexus-data\sonatype/nexus3:latest
  • 完整配置命令(生产环境推荐)

    docker run -d\--name nexus3\--restart unless-stopped\-p8081:8081\-p5000:5000\# Docker 仓库端口(可选)-v /usr/local/src/nexus/nexus-data:/nexus-data\-v /etc/localtime:/etc/localtime:ro\-eINSTALL4J_ADD_VM_PARAMS="-Xms256M -Xmx512M -XX:MaxDirectMemorySize=1g"\-eNEXUS_CONTEXT="/"\sonatype/nexus3:latest
    • -d:后台运行
    • --name nexus3:容器名称
    • --restart unless-stopped:自动重启策略,其他选项:no(不重启)、always(总是重启)、on-failure(失败时重启)
    • -p 8081:8081:映射 Web 管理端口:主机8081 -> 容器8081
    • -p 5000:5000:Docker 私有仓库端口
    • -v nexus-data:/nexus-data:挂载数据卷(持久化存储),将主机目录挂载到容器内
    • -v /etc/localtime:/etc/localtime:ro:时区同步,将主机的时区文件挂载到容器内
    • -e INSTALL4J_ADD_VM_PARAMS:JVM 内存参数设置
    • -e NEXUS_CONTEXT="/":上下文路径(默认为根目录)

3.4 初始访问

  1. 等待容器启动(首次启动需要 2-5 分钟)
  2. 访问:http://localhost:8081
  3. 默认管理员账号:
    • 用户名:admin
    • 初始密码:查看容器日志获取
      # 查看容器日志,找到初始密码docker logs nexus3|grep"admin.password"# 或者直接查看文件dockerexecnexus3cat/nexus-data/admin.password
  4. 登录账号:admin
  5. 按提示修改密码

3.5 基本设置

  1. 禁用匿名访问

    设置 → Security → Anonymous Access 取消勾选"Allow anonymous users to access the server"

  2. 创建用户

    设置 → Security → Users → Createlocaluser 填写:ID、First Name、Last Name、Email、Password 选择 Role:nx-admin(管理员权限)

四、配置各种类型仓库

4.1 Maven 仓库配置

  • 创建代理仓库(Proxy)
    1. 进入 设置 → Repository → Repositories → Create repository
    2. 选择 maven2 (proxy)
    3. 配置示例:
      • Name: maven-central
      • Remote storage: https://repo1.maven.org/maven2/
      • Version policy: Release
      • Layout policy: Strict

  • 创建宿主仓库(Hosted)

    1. 选择 maven2 (hosted)
    2. 配置示例:
      • Name: maven-releases
      • Version policy: Release
      • Deployment policy: Allow redeploy
  • 创建仓库组(Group)

    1. 选择 maven2 (group)
    2. 将前面创建的仓库加入组:
      • maven-central
      • maven-releases
      • maven-snapshots

4.2 Docker 仓库配置

  1. 启用 Docker 仓库

    设置 → Repository → Repositories → Create repository 选择 docker(hosted)

  2. 配置 Docker 仓库

    Name: docker-hosted HTTP:8082# 注意此端口需要与容器映射端口一致Deployment policy: Allow redeploy

五、仓库使用

5.1 Maven 仓库使用

  1. Maven 配置

    <settings><servers><server><id>nexus</id><username>deployment</username><password>your-password</password></server></servers><mirrors><mirror><id>nexus</id><mirrorOf>*</mirrorOf><url>http://localhost:8081/repository/maven-public/</url></mirror></mirrors></settings>
  2. 项目 pom.xml 配置:

    <distributionManagement><repository><id>nexus</id><name>Releases</name><url>http://localhost:8081/repository/maven-releases/</url></repository><snapshotRepository><id>nexus</id><name>Snapshots</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>
  3. 发布和拉取

    # 发布到 Nexusmvn clean deploy# 从 Nexus 拉取依赖mvn cleaninstall

5.2 Docker 仓库使用

  1. 配置 Docker 客户端

    # 1. 配置 insecure-registries(Linux/Mac)sudovim/etc/docker/daemon.json{"insecure-registries":["localhost:8082"]}# 重启 Dockersudosystemctl restart docker# 2. 登录到 Nexusdocker login localhost:8082# 用户名/密码:Nexus 创建的用户
  2. 推送/拉取镜像

    # 1. 给镜像打标签docker tag my-image:latest localhost:8082/my-image:latest# 2. 推送到 Nexusdocker push localhost:8082/my-image:latest# 3. 从 Nexus 拉取docker pull localhost:8082/my-image:latest# 4. 拉取远程镜像(通过代理)# Nexus 会自动缓存 Docker Hub 的镜像docker pull localhost:8082/library/nginx:latest

六、高级功能

6.1 权限管理(RBAC)

设置 → Security → Roles 设置 → Security → Privileges
  • 创建角色(Role)
  • 分配权限(Privilege)
  • 用户绑定角色

6.2 LDAP 集成

设置 → Security → LDAP
  • 连接公司 LDAP/AD 进行用户认证

6.3 清理策略

设置 → Repository → Cleanup Policies
  • 基于时间清理
  • 基于版本数清理
  • 正则表达式匹配

6.4 Webhook

设置 → System → Capabilities → Webhook

配置事件通知,如:

  • 制品上传
  • 清理完成
  • 系统异常

七、最佳实践

  1. 定期备份:备份整个 nexus-data 目录
  2. 监控告警:设置磁盘使用率监控
  3. 权限细分:按团队分配最小必要权限
  4. 定期清理:配置自动清理策略
  5. 版本控制:重要配置导出备份
  6. HTTPS:生产环境启用 HTTPS
  7. 高可用:考虑集群部署(Nexus Pro 版本)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 17:32:21

匠魂的熔炼注册

匠魂的熔炼系统 代码概述 这是熔炼系统的主要注册类,负责注册: 所有熔炉相关的方块(加热块、焦黑块、各种功能方块) 熔炼相关的物品(模具、铸件等) 方块实体类型 配方序列化器 GUI容器 创造模式标签页 关键部分分析 1. 合金相关定义位置 合金相关的注册在以下位置: …

作者头像 李华
网站建设 2026/3/29 18:06:35

PRML为何是机器学习的经典书籍中的经典?

PRML&#xff08;Pattern Recognition and Machine Learning&#xff0c;中文名《模式识别与机器学习》&#xff09;被誉为机器学习领域的“圣经”&#xff0c;其经典性体现在内容深度与广度、理论框架的统一性、数学严谨性、结构合理性、实践资源丰富性等多个方面&#xff0c;…

作者头像 李华
网站建设 2026/3/27 0:13:11

教程 31 - 材质系统

上一篇&#xff1a;纹理系统 | 下一篇&#xff1a;几何体系统 | 返回目录 &#x1f4da; 快速导航 &#x1f4cb; 目录 引言学习目标材质系统概念材质数据结构材质配置文件材质系统架构材质加载流程配置文件解析字符串工具扩展渲染器集成使用示例常见问题练习与挑战下一步 &am…

作者头像 李华