Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库
转载自:https://cloud.tencent.com/developer/article/1010590
1、Nexus OSS 3 介绍
我们知道 Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。但那是 Nexus 2 时代,现在随着 Nexus 的不断完善和升级,现在 Nexus 3 在原有 Maven 基础上,新增 bower、docker、git lfs、npm、nuget、pypi、raw、rubygems、yum 支持,而且会持续更新增加对更多类型的支持。
2、环境、软件准备
本次演示环境,我是在本机 Mac OS 上操作,以下是安装的软件及版本:
- Java:version 1.8.0_91
- Docker:version 17.09.0-ce
- Git:version 2.10.1
- git-lfs:version 2.2.1
- GitLab:GitLab Community Edition 9.1.4
- Nexus:OSS 3.6.0-02
注意:Nexus 需要运行在 Java 环境,所以需要先安装一下 JDK,后边演示 git-lfs 操作,需要本地先安装下 Git,Git 代码存储在 GitLab,需要先安装下 GitLab,后边演示 Docker 仓库操作,需要本地先安装 Docker,这里忽略 JDK、Docker、Git、git-lfs、GitLab 安装。git-lfs 安装过程可参考之前的文章 GitLab 之 Git LFS 大文件存储的配置
3、Nexus OSS 3 服务搭建
Nexus OSS 3 安装很简单,现在对应环境的软件安装包,解压安装配置即可,也或者 Docker 安装。目前最新版已经更新到 3.6.0-02。
1、安装包安装
这里我本机选择 OSX 安装包,安装到本机 /Applications/soft/nexus3/
目录。
$ cd /Applications/soft/nexus3/
$ cp /Users/wanyang3/Downloads/nexus-3.6.0-02-mac.tgz ./
$ tar -zxvf nexus-3.6.0-02-mac.tgz
$ ls -l nexus-3.6.0-02
LICENSE.txt
NOTICE.txt
bin
deploy
etc
lib
public
system
$ ./bin/nexus start|stop|run|run-redirect|status|restart|force-reload
$ ls -l /Applications/soft/nexus3/
nexus-3.6.0-02
sonatype-work
这里简要说明下各个目录的作用:
- bin: 包含 Nexus 启动 | 停止等脚本,以及一些跟启动有关联的配置参数,如JVM、karaf等
- etc: 包含主配置文件 nexus-default.properties,以及一些其他配置文件,如ssl、jetty、karaf等
- lib: 包含跟 karaf 相关的 jar 包
- public: 包含跟 Nexus 应用相关的公共资源
- system: 包含所有组成 Nexus 应用的组件和插件
- sonatype-work 目为 Nexus 默认数据存储目录,包含所有组件、仓库、配置、db、日志等。
Nexus 启动后默认端口是 8081,通过浏览器访问 http://localhost:8081
即可进入 Nexus 页面。如果想更改端口号,可以修改 <nexus_install_dir>/etc/nexus-default.properties
文件,指定其他端口号如: application-port=9999
。
2、docker images 安装
$ docker pull sonatype/nexus3
$ docker run -d -p 9999:8081 --name nexus3 sonatype/nexus3
测试是否启动成功
$ curl -u admin:admin123 http://localhost:9999/service/metrics/ping
启动完成后,会进入初始化界面,然后进入主界面,初始管理员账户为 admin,初始密码 admin123 登录。
4、Git LFS 仓库配置使用
Git LFS 操作之前先在本地安装好 Git LFS,安装方法可参考 GitLab 之 Git LFS 大文件存储的配置
4.1 创建一个 Git LFS Hosted 仓库
admin 登录 —> 设置 —> Repository —> Repositories —> gitlfs (hosted),输入 Name(这里我输入 gitlfs-hosted) 以及选择 Deployment policy 类型为 Allow redeploy (允许重新部署),默认为 Disable redeploy (不允许重新部署) ,还有 Read-only(只读类型)。
4.2 配置项目的 Git LFS
这里我以一个在 gitlab 上开启了 git-lfs 的项目 demo2 为例,配置该项目针对某种类型的大文件上传到刚刚搭建的 Nexus 服务的 gitlfs-hosted 仓库下,顺便可以验证下当配置了多个 git-lfs 存储方案的项目时,git-lfs 存储选择方案。
$ cd demo2
$ git config -f .lfsconfig lfs.url http://localhost:9999/repository/gitlfs-hosted/info/lfs #会在当前目录生成一个 .lfsconfig 配置文件,需要一并提交到 Git,否则Clone 的时候不会去配置的地址上找
$ cat .lfsconfig
[lfs]
url = http://localhost:9999/repository/gitlfs-hosted/info/lfs
$ cp ~/Downloads/soft/apache-tomcat-7.0.70.zip ./
$ git lfs track "*.zip" #设置存储到 LFS 的文件扩展名,这里我设置 .zip 后缀格式的文件
$ cat .gitattributes #自动生成的文件,需一并提交到 Git,否则 Clone 项目的时候 Git LFS 不起作用
* .zip filter=lfs diff=lfs merge=lfs -text
$ git add .
$ git commit -m "test lfs"
$ git push origin master
操作完成后,我们可以登录 Nexus 查看刚刚 commit 的文件 apache-tomcat-7.0.70.zip 是否上传到指定的 gitlfs-hosted 下吧。
5、Docker 私有仓库配置使用
Nexus 3 可以创建三种类型的 Docker 仓库:
- docker (proxy) 代理和缓存远程仓库,例如 Docker Hub、Google Container Registry 等,只能 pull。
- docker (hosted) 托管仓库,创建私有仓库,可以 push 和 pull。
- docker (group) 将多个 proxy 和 hosted 仓库添加到一个组,整个成一个源,只访问一个组地址即可,只能pull。
这里我们创建一个 hosted 类型的私有仓库。
5.1 创建一个 Docker Hosted 仓库
admin 登录 —> 设置 —> Repository —> Repositories —> docker (hosted)。
- 输入 Name 这里我输入 docker-hosted。
- HTTP 设置,可以设置一个其他端口号(当服务经过代理后可使用),这里我设置成18443,下边 push 时往该端口 push。
- Force basic authentication 设置,是否允许任何人 pull,也即是否公开。这里设置不公开。
- Enable Docker V1 API 设置,是否支持 V1 API,这里设置支持,这样支持类型更多了。
- Deployment policy 设置,是否允许重新部署或者只读,这里设置为 Allow redeploy 允许重新部署。
5.2 Docker 操作
这里我们以 nginx:1.11 为例,测试能否 push 到指定 docker-hosted 仓库。
$ docker tag nginx:1.11 10.236.65.131:18443/common/nginx:1.11
$ docker images
......
10.236.65.131:18443/common/nginx 1.11 01f818af747d 9 months ago 182MB
nginx 1.11 01f818af747d 9 months ago 182MB
......
$ docker login -u admin -p admin123 10.236.65.131:18443
Login Succeeded
$ docker push 10.236.65.131:18443/common/nginx:1.11
注意:10.236.65.131 为我本机 ip 地址,端口号使用设置的 18443。如果执行 docker login ...
操作报错:
$ docker login -u admin -p admin123 10.236.65.131:18443
Error response from daemon: Get https://10.236.65.131:18443/v2/: http: server gave HTTP response to HTTPS client
- 如果系统是 MacOS,则可以点击 “Preference” 里面的 “Advanced” 在 “Insecure Registry” 里加上 10.236.65.131,重启 Docker 客户端就可以了。
- 如果系统是 Ubuntu,则修改配置文件 /lib/systemd/system/docker.service,修改 [Service] 下 ExecStart 参数,增加 –insecure-registry 10.236.65.131。
- 如果系统是 Centos,可以修改配置 /etc/sysconfig/docker,将 OPTIONS 增加 –insecure-registry 10.236.65.131。
参考资料
Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库的更多相关文章
- SpringCloud搭建分布式配置中心(基于git)
1.简介 Spring Cloud Config.它用来为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分. 其中服务端也称为分布式配置中心,他是独立的微服务应用,用 ...
- kubernetes实战篇之nexus oss服务器部署及基于nexus的docker镜像仓库搭建
系列目录 Nexus oss仓库管理平台搭建 Nexus是一款仓库管理工具,支持Npm,bower,maven,nuget,apt,yum甚至docker,helm等各种仓库,说的通俗以下,就是私服镜 ...
- Nexus Repository Manager OSS 3.x 安装配置
前言想要使用maven搭建项目,但是国内的网络环境可以想象,还有公司自己开发的jar包等问题,所以需要搭建一个maven的私服,这样便于管理. 找了一些教程,顺便记下来,当做笔记. 本文以Window ...
- 试用 Nexus OSS 3.0 的docker仓库 (一)
Nexus 3.0 可以创建三种docker仓库: 1. docker (proxy) 代理和缓存远程仓库 ,只能pull 2. docker (hosted) 托管仓库 ,私有仓库, ...
- 【Maven学习】Nexus OSS私服仓库的安装和配置
背景 公司的代码依赖是通过Maven进行管理的,而Maven的私库我们使用的是Nexus,目前使用的版本是Nexus Repository Manager OSS 2.12.1. 但是由于之前我们搭建 ...
- 试用 Nexus OSS 3.0 的docker仓库 (二)
试用 Nexus OSS 3.0 的docker仓库 (一) : http://www.cnblogs.com/wzy5223/p/5410990.html 三. 创建docker私有仓库,docke ...
- docker nexus oss
docker login/search x.x.x.x:8081 sonatype/docker-nexus Docker images for Sonatype Nexus with the Ora ...
- 【Maven学习】Nexus OSS私服仓库的备份与迁移
背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...
- Nexus OSS私服仓库的备份与迁移
背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...
随机推荐
- iOS中 Tagged Pointer 技术
前言: 从64位开始,iOS引入了Tagged Pointer技术,用于优化NSNumber.NSDate.NSString等小对象的存储. Tagged Pointer主要为了解决两个问题: 内 ...
- selenium webDriver的运用
声明实例运行浏览器 配置浏览器驱动后,可以通过简单的2行代码就可以驱动浏览器(配置这里不加赘述) from selenium import webdriver driver = webdriver.C ...
- MySQL为什么"错误"选择代价更大的索引
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 MySQL优化器索引选择迷思. 高鹏(八怪)对本文亦有贡献. 1. 问题描述 群 ...
- CDO如何盘点算法、推动算法业务增长
在数字经济时代,算法对企业业务增长至关重要,是企业进行数字化转型.构建竞争优势的关键.IT工程师或数据分析师可能会将算法描述为一组由数据操作形成的规则.而从业务价值方面考虑,算法是一种捕获商业机会.提 ...
- Apache DolphinScheduler 使用文档(4/8):软件部署
本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 4. 软件部署 4.1 为 dolphinschedu ...
- wbr 文本换行规则标签
<wbr/>标签规定在文本中的何处适合添加换行符.如果文本太长,浏览器可能会在错误的位置换行,那么可以使用<wbr/>标签来添加单词换行时机. Talk is cheap. S ...
- 若依3.6.0使用Mybatis-plus分页失效以及完美替换Pagehelper
一.前言 小编最近在经历后端框架的迁移,虽然不是小编来做,但是有个分页的情况让小编和一个同事去搞. 说一下小编这边的需求: 原来框架使用Mybatis-plus进行分页,要更换的新框架若依是使用Pag ...
- 探秘:TriCore处理器中断机制
1. TriCore与中断的简介 TriCore是德国英飞凌科技公司旗下的第一个为实时嵌入式系统而优化的统一的.32位的微控制器-DSP(Digital Signal Processing)处理器架构 ...
- C++11实现的数据库连接池
它什么是? 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:类似的还有线程池. 为什么要用? 一个数据库连接对象均对应一个物理数据库连接, ...
- 线性代数 | Jordan 标准型的笔记
内容概述: 把方阵 A 的特征多项式 \(c(λ)=|λE-A|\) 展开成 \(c(λ)=\sum_ia_i\lambda^i\) 的形式,然后使用神乎其技的证明,得到 \(c(A)=O\),特征多 ...