• Docker - 使用 Nexus3 搭设私有 NuGet 仓库

    • Nexus 默认帐号

    • Repositories

    • 上传组件包(Package)

    • Repositories 说明

    • 准备 Package

    • 上传 Package

    • 使用 Package

    • 拉取 Nexus 镜像

    • 运行 Nexus

    • NuGet

    • Nexus 私有仓库

    • 前言

    • 说明

    • 安装

    • Nexus NuGet 仓库简单使用

    • 总结

前言

NuGet

 Nuget 是免费、开源的包管理工具,专注于在 .Net.Net Core 平台应用开发过程中第三方组件库的管理,相对于传统单纯的 dll 引用要方便、科学得多。 
 其中 nuget.org 是最著名的 NuGet 公开库,但是企业内部开发的(业务)公共组件因为私密性或商业机密不能上传到公共库中,所以企业内部需要搭建一个私有的 NuGet 仓库【私服】来支持。虽然微软有提供的 NugetServer,但 NugetServer 用起来并不那么方便。 
 而且企业有可能不止使用 C# 一种语言,可能其他的语言组件也需要管理,比如:JavaDocker 镜像 等,NugetServer 就捉襟见肘,本文我给大家带来一款全能型的私服软件 Nexus

Nexus 私有仓库

Nexus 是一个强大的工具仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 
Nexus 支持管理 Bower 、Docker、Maven、npm、NuGet、Yum、PyPI 等工具包。最新版本的 Nexus3.x 全面支持 Docker 的私有镜像存储。

Nexus 官网:www.sonatype.com

说明

本文主要介绍怎么在 Linux (CentOS) 系统上使用 Docker 来部署 Nexus ,本文使用的是 Nexus v3.15.3 版本进行操作的。 
为什么使用 Docker 来部署 Nexus,是因为作者公司现在的基础设施为了方便维护全部使用 Docker 来部署。如果你不想使用 Dokcer 或者不想在 Linux 部署请前往官方网站下载对应安装包。

注意:本文是在 CentOS 系统下进行操作的。

安装

下面介绍的安装步骤是作者在 Linux 系统已经安装了 Docker 为前提条件。

拉取 Nexus 镜像

从 Docker Hub 拉取 Nexus 的镜像到本地,我这里拉取是最新版本的。你也可以拉取相对应版本的镜像。

  1. $ docker pull sonatype/nexus3:latest

  2. latest: Pulling from sonatype/nexus3

  3. a02a4930cb5d: Pull complete

  4. 2c6aa0f814dc: Pull complete

  5. ce7b7501fc94: Pull complete

  6. Digest: sha256:00ede0830e375c8a9758ea5d98dd020425850bbeccc822da68e7bad7ae92dbfa

  7. Status: Downloaded newer image for sonatype/nexus3:latest

镜像详细说明:https://hub.docker.com/r/sonatype/nexus3

运行 Nexus

在运行之前先创建一个目录用来存放 Nexus 持久化数据。

  1. $ mkdir -p /data/nexus

使用 Docker 命令运行 Nexus 。

  1. $ docker run -d -p 8081:8081 --name nexus -v /data/nexus:/nexus-data sonatype/nexus3:latest

  2. c90c62f4bd5d3f09d3f0d562e5fe41401954898729ed9f7407ed71296f372883

Docker 返回容器的的 Hash ID,代表容器已经启动,通过 http://serverip:8081 就能访问Nexus了。

但是请求的时候拒绝我的请求,这个地方困扰了我很久。我第一步先排除是否是防火墙的问题。

  1. $ firewall-cmd --state

  2. not running

使用命令查看防火墙没有运行,第二步查看容器当前状态。

  1. $ docker container ls -a

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS

  3. c90c62f4bd5d sonatype/nexus3:latest "sh -c ${SONATYPE_DI…" 27 minutes ago Exited

发现这个容器的状态变成 Exited 已经退出,找到问题所在可能是什么原因导致 nexus 没有启动起来。现在使用容器日志查一下挂掉的原因。

  1. $ docker container logs c90c

  2. mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied

  3. mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied

  4. OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory

  5. Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log

  6. Warning: Forcing option -XX:LogFile=/tmp/jvm.log

  7. Unable to update instance pid: Unable to create directory /nexus-data/instances

  8. /nexus-data/log/karaf.log (No such file or directory)

  9. Unable to update instance pid: Unable to create directory /nexus-data/instances

从日志发现是因为 Nexus 在创建文件夹的时候没有权限。这个应该是上面在创建文件夹的时候没有分配权限导致的。下面我们给这个 /data/nexus 文件夹分配权限。

  1. $ chown -R 200 /data/nexus

  2. $ docker container start c90c62f4bd5d

  3. c90c62f4bd5d

重新启动容器后,再次访问一下 Nexus,下图显示可以打开 Nexus 。 
我们现在发现 Nexus 可以支持很多仓库格式。我们现在已经安装完成了,下面我们来讲怎么简单使用 Nexus。

Nexus NuGet 仓库简单使用

下面将只会介绍一下怎么使用 NuGet ,至于使用 Nexus 其他仓库请前往官方查看详情文档。

Nexus 默认帐号

Nexus 的默认管理员账号 admin,密码 admin123 。可以在 Nexus 管理界面右上角 Signin 按钮可以登录Nexus。登录完成之后可以点击下面图片齿轮图标,进行管理 Nexus 。 

Repositories

点击右菜单的 Repositories 按钮可以看到 Nexus 内置的默认仓库: 

Repositories 说明

Nexus 默认已经创建好了 Nuget 以及其他的仓库,并且是创建了3个不同类型的仓库:nuget-groupnuget-hostednuget.org-proxy

nuget.org-proxy:类型是 proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从 nuget.org 下载到本地,然后给我提供这个包。

nuget-hosted:类型是 hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。

nuget-group:类型是 group,表示仓库组,它结合了 nuget.org-proxy 和 nuget-hosted ,能对外提供上述两者中的包。

小结: 
nuget-hosted 负责包上传,nuget.org-proxy 负责代理从 nuget.org 下载包到 Nexus 缓存中,nuget-group 负责提供包。一般使用 nuget-group 提供的 URL 就可以了,它可以把私服和公共库进行合并。

上传组件包(Package)

准备 Package

  1. 先使用 Visual Studio 创建一个 类库项目 命名为 NexusTest 。

  2. 在 解决方案资源管理器 选中 NexusTest 项目右击点击属性。进入项目设置页选择 打包 选项卡。勾选 在版本中胜出NuGet包 。

  3. 在 解决方案资源管理器 选中 NexusTest 项目右击点击 生成。生成成功之后在本项目的 bin\Debug 目录下找到 NexusTest.1.0.0.nupkg Nuget 文件,代表 Package 已经准备完成。

上传 Package

  1. 添加 Nuget Realms,因为 Nexus 认证 Nuget 是通过 Realms 来认证,因此要添加 Nuget Realms。

  2. 在 Upload 选中 nuget-hosted 点击进入,为什么要选中 nuget-hosted 上面已经说明。

  3. 把上面准备好的 NexusTest.1.0.0.nupkg Nuget 文件上传到 Nexus。

  4. 第三步上传成功,在 Browse 选中 nuget-hosted 点击进入。可以查看到已经上传成功。

使用 Package

  1. 获取 Nuget 程序包源地址,在 Nexus 的 Browse 找到 nuget-group 获取到地址。

  2. 在 Visual Studio 的 Nuget 管理器,点击齿轮进行设置 Nexus 地址。

  3. 添加 Nexus 私有 Nuget 仓库地址。

  4. 通过 Nuget 管理器 查询一下刚刚我们上传的 NexusTest 包。


总结

Nexus 基本可以满足企业的私服需求,而且还有一个可视化工具进行管理,降低企业管理成本。

引用:

Nexus 镜像详细说明:https://hub.docker.com/r/sonatype/nexus3/ 
使用 Nexus 搭建私有 Nuget 仓库:http://www.cnblogs.com/Erik_Xu/p/9211471.html 
Linux的权限:https://www.cnblogs.com/lhm166/articles/6605059.html 
关闭防火墙:https://blog.csdn.net/ytangdigl/article/details/79796961

转载是一种动力 分享是一种美德

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

QQ群:

编程交流群<85318032>

产品交流群<897857351>

长沙线下技术社区已经创建,有兴趣者可以通过客服加群。接下来,我们会定期组织一些线下技术交流分享会,以飨大家。

原文链接:

https://www.cnblogs.com/lfzm/p/10606524.html

使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)相关推荐

  1. Docker 环境:Nexus3.x 的私有仓库

    Nexus3.x 的私有仓库 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 使用 Docker 官方的 Registry 创建的仓库面临一些维护问 ...

  2. Docker之使用maven插件【Dockerfile方式】构建并推送镜像到私有仓库

    准备工作 操作系统版本 [root@node02 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) docker版本 [ ...

  3. 【虚拟化】docker构建私有仓库,上传镜像至私有仓库

    1.拉取仓库镜像 docker pull registry 2.启动仓库容器 docker run -di --name=registry -p 5000:5000 registry 3.编辑daem ...

  4. Docker之使用maven插件【配置方式】构建并推送镜像到私有仓库

    准备工作 操作系统版本 [root@node02 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) docker版本 [ ...

  5. Docker推送镜像到私有仓库Harbor

    概述 因为项目需要将镜像推送到私有仓库,测试过程中遇到些问题,用文章记录下来. 版本信息 操作系统:银河麒麟V10SP2 Docker:20.10.17 Docker-Compose:1.22 操作步 ...

  6. docker <应用分享> 上传镜像到 私有仓库 / 本地仓库,从私库拉取镜像

    前两篇博客写了docker上传镜像到dockerhub,以及上传镜像到阿里云仓库.感兴趣的可以点下面链接 docker上传镜像到dockerhub docker上传镜像到阿里云 前面两种方式都是放在云 ...

  7. 解决docker push镜像到私有仓库时的报错【http: server gave HTTP response to HTTPS client】

  8. 使用nexus3配置golang私有仓库(go私服)

    # 1,前言说明 golang是近来非常火热的语言,但是处理其依赖包一直都是一个让人头疼的问题,尤其是在国内,开发者需要下载一些官方的包的时候,就会非常苦恼.尽管已经有了私服 Athens,公司也已经 ...

  9. 如何正确推送镜像到私有仓库Harbor(http方式)

    1 缘起 部署了Harbor之后,就要推送镜像, 为后续K8S拉取镜像做准备. 由于是测试环境,因此使用http方式推送镜像. 但是,推送镜像到Harbor过程中,遇到了一系列问题, 遇到一个解决一个 ...

最新文章

  1. 2022-2028年中国装配式装修行业市场研究及前瞻分析报告
  2. oracle json 搜索,oracle 正则查询json返回报文中某个字段的值
  3. 虚拟化技术—docker容器—私有库篇
  4. stringstream和cin
  5. windows安装ffmpeg
  6. 【计算机组成原理】乘法阵列器
  7. 计算机的硬件技能,计算机的最基础——软硬件
  8. 2018.9.15,Matlab实验三:字符串、单元数组和结构体
  9. ascii码和unicode
  10. qt中socket通信流程图_Qt学习 之 Socket通信
  11. sql 获取当前系统时间
  12. c语言的二维数组的指针访问,用指针访问二维数组
  13. 生理学_神经系统的功能
  14. Node+puppeteer学习笔记 (二)--环境搭建Win、MAC、Linux环境,以及使用Sublime Text3运行
  15. 关于MySQL中insert ignore,insert on duplicate和replace into,你可能没想过区别
  16. springboot下,上传PPT文件转pdf再转图片
  17. 06-1-SVM原理
  18. C#发送邮件(阿里企业邮箱示例 包括各个类型的服务器及端口配置)
  19. 联想新视界帝拓思(DTOS)联想CVC首亮相
  20. 基于KU115的FPGA加速卡

热门文章

  1. Cygwin使用指南
  2. 有序的Map集合--LinkedHashMap
  3. Spark官方调优文档翻译(转载)
  4. IDC:第一季度全球服务器市场收入下滑4.6% 市场为重大升级做准备
  5. 机器学习之决策树熵信息增量求解算法实现
  6. .NET 现代化动态 LINQ 库 Gridify
  7. 第六届中国开源年会(COSCon'21)开心开源精彩收官
  8. COSCon'21 参会指南 你想要的这里都有
  9. 面向.NET开发人员的Dapr——入门
  10. 实际体验SpanT 的惊人表现