Nexus 搭建私有镜像仓库

Nexus 搭建私有镜像仓库

说明

国内网络环境下直接使用默认的 npm 下载资源过慢,所以很多文章中都建议将 npm 的 registry 切换为 淘宝的 npm 镜像,如下

npm config set registry https://registry.npm.taobao.org

registry 被译为“登记处”,这里指的是镜像仓库,无论 npm 默认的仓库还是淘宝的仓库都是公有的,在一些场景下,我们需要一个私有仓库来托管我们自己的包

针对 npm,Nexus可以提供如下方案

  1. 官方镜像通过代理存储库实现:你可以通过代理存储库来使用 npm 官方镜像仓库或者其他的公有镜像仓库,这些资源已经被存储库代理后就不会出现导致重复下载 package 的情况了
  2. 私有镜像托管:可以在组内共享开发的私有包
  3. 通过“聚合”实现将公有镜像仓库以及私有镜像仓库的聚合,最终对外公开为一个镜像仓库

创建步骤详解

0. 下载并安装 Nexus

  1. MAC 下载地址 下载
  2. 解压文件到 ~/ 下得到两个文件夹 nexus-<version>sonatype-work
  3. 转到应用程序目录 cd ./nexus-<version> & ./bin/nexus run 开启应用
  4. 等到打印出 Started Sonatype Nexus OSS 3.14.0-04 字样
  5. 浏览器打开 http://localhost:8081/
  6. 界面中点击 Sign In, 输入账户密码
  7. 默认凭据admin / admin123 进入后修改密码

1. 创建公有镜像的代理存储库

  1. 点击顶部配置按钮
  2. 左侧 Menu 选择 Respository
  3. 首先创建 Blob Stores Create blob store => input Name => click to create
  4. 再创建一个 Respository Create repository => select npm(proxy) option
  5. 镜像仓库中输入
    • Name 仓库名称
    • Remote storage 要代理的镜像地址,一般写 npm 默认镜像
    • 选择一个 Blob store,选择我们刚才创建的 store
    • 最后填写 http 的身份验证 后保存即可

在这里插入图片描述

2. 创建私有镜像托管仓库

  1. 点击顶部配置按钮
  2. 左侧 Menu 选择 Respository
  3. 首先创建 Blob Stores Create blob store => input Name => click to create
  4. 再创建一个 Respository Create repository => select npm(hosted) option
  5. 镜像仓库中输入
    • Name 仓库名称
    • 选择一个 Blob store,选择我们刚才创建的 store
    • Deployment policy 设置部署策略为 Allow redeploy 允许部署

在这里插入图片描述

3. 创建聚合仓库

  1. 点击顶部配置按钮
  2. 左侧 Menu 选择 Respository
  3. 首先创建 Blob Stores Create blob store => input Name => click to create
  4. 再创建一个 Respository Create repository => select npm(group) option
  5. 镜像仓库中输入
    • Name 仓库名称
    • online 接收传入的请求
    • 选择一个 Blob store,选择我们刚才创建的 store
    • Strict Content Type Validation 验证上传内容格式
    • Group 中选择组中关联的存储库

在这里插入图片描述

4. 设置 Realms 管理活动安全领域及其顺序

主要是需要将 npm Bearer Token Realm 设置到 Active 中,否则执行 npm publish 会报 401 无权限错误

在这里插入图片描述

5. 创建新用户

  1. 点击顶部配置按钮
  2. 左侧 Menu 选择 Users => create User 进入创建
    • ID 也是用户名
    • Email 邮件
    • Password 密码
    • Roles 选择权限模板

权限模板

  1. 点击顶部配置按钮
  2. 左侧 Menu 选择 Roles => create role 进入创建
    • ID
    • name 用户名
    • Privileges 每一项权限
    • Roles 可以继承的别的权限模板的权限

6. 用户使用配置

  1. 拿到聚合仓库的 URL
  2. 配置用户 npm 镜像
# 直接运行如下命令 最后的地址即为 聚合仓库地址
npm config set registry http://localhost:8081/repository/npm-group/

# 可以在 ~/.npmrc 文件中查看当前镜像仓库的地址

7. 镜像仓库的读写权限

默认情况下,任意访客都可以有‘读’ 的权限,但是在某些情况下或者 用户有 ‘写’的需求时需要用户认证

# 如下方式登录后,会得到一个身份令牌,最终会被存储到 ~/.npmrc _authToken=xxxx...
npm login
# 也可以按照如下方式设置聚合仓库以及私有仓库的登录token
npm adduser --registry=http://localhost:8081/repository/npm-group/
npm adduser --registry=http://localhost:8081/repository/npm-privite/

# 根据提示输入账户名密码(username 包含大写字母不可以)

8. 私有组件上传

在需要上传的包的 package.json 中设置 publishConfig

# 将上传的地址设置为私有仓库地址
{
    "publishConfig": {
        "registry": "http://localhost:8081/repository/npm-privite/"
    }
}

这样执行 npm publish 上传的地址就是私有仓库的地址了,而由于聚合仓库中聚合了私有仓库,因此,私有仓库的更新,也会使从聚合仓库获取的内容变成最新的

其他

  1. blob stores可以被一个或者多个仓库组使用。默认的Blob stores是基于文件系统的。可以简单的理解为一个文件夹。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会为您提供详细的操作步骤和代码。 1. 安装Docker和Nexus 首先需要安装Docker和Nexus。Docker官网可以下载到Docker的安装包,Nexus可以在Sonatype官网下载到。 2. 配置Nexus - 启动Nexus 在安装Nexus之后,进入Nexus的安装目录,执行以下命令启动Nexus: ``` ./bin/nexus start ``` - 登录Nexus Nexus启动之后,在浏览器中访问`http://localhost:8081`,进入Nexus的登录页面。默认的用户名和密码是`admin/admin123`。 - 创建Docker仓库 在登录Nexus之后,进入仓库管理页面,创建一个`docker`类型的仓库,并将仓库名称设置为`docker-repo`。 - 配置Docker客户端 在本地配置Docker客户端,将Docker的镜像仓库地址指向Nexus的Docker仓库。在终端中执行以下命令: ``` sudo vim /etc/docker/daemon.json ``` 在文件中添加以下内容: ``` { "insecure-registries": ["localhost:8082"] } ``` 其中`localhost:8082`是Nexus的Docker仓库地址。 - 重启Docker服务 在配置完成之后,需要重启Docker服务使配置生效: ``` sudo systemctl restart docker ``` 3. 存储操作系统镜像Nexus的Docker仓库中存储操作系统镜像,以下以Ubuntu为例。 - 拉取Ubuntu镜像 在终端中执行以下命令拉取Ubuntu镜像: ``` docker pull ubuntu:latest ``` - 为Ubuntu镜像打标签 为Ubuntu镜像打上`docker-repo`的标签,以便将镜像上传到Nexus的Docker仓库中: ``` docker tag ubuntu:latest localhost:8082/docker-repo/ubuntu:latest ``` - 上传Ubuntu镜像 将打好标签的Ubuntu镜像上传到Nexus的Docker仓库中: ``` docker push localhost:8082/docker-repo/ubuntu:latest ``` 4. 运行操作系统镜像Nexus的Docker仓库中拉取Ubuntu镜像,并运行生成容器。 - 拉取Ubuntu镜像 在终端中执行以下命令拉取Ubuntu镜像: ``` docker pull localhost:8082/docker-repo/ubuntu:latest ``` - 运行Ubuntu容器 在终端中执行以下命令运行Ubuntu容器: ``` docker run -it localhost:8082/docker-repo/ubuntu:latest /bin/bash ``` 以上命令会启动一个Ubuntu容器,并进入容器的终端。 至此,通过docker利用nexus搭建私有仓库,并存储常用的操作系统镜像的过程已经完成。 代码示例: ``` # 拉取Ubuntu镜像 docker pull ubuntu:latest # 为Ubuntu镜像打标签 docker tag ubuntu:latest localhost:8082/docker-repo/ubuntu:latest # 上传Ubuntu镜像 docker push localhost:8082/docker-repo/ubuntu:latest # 拉取Ubuntu镜像 docker pull localhost:8082/docker-repo/ubuntu:latest # 运行Ubuntu容器 docker run -it localhost:8082/docker-repo/ubuntu:latest /bin/bash ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值