type
status
date
slug
summary
tags
category
icon
password
Property
Mar 4, 2024 12:02 PM
目的
学习 Nexus 制品库的介绍与安装
介绍
在前面我们写到,制品库是承接 CI 构建后的产出制品的仓库,具有版本管理,历史管理,权限校验等功能。
在这里,我们选用 Nexus3 作为制品库。
正式开始
拉取镜像

image
启动容器
新建一个名为 nexus 的文件夹,方便我们存放 Nexus 相关数据,并赋予权限。

image
创建容器

image
- Nexus 主服务端口,我们设置为 8081,;但是还需要新分配一个端口为服务端口,这里采用的是 8082
防火墙
将对应端口添加到防火墙

image
访问 Nexus
打开浏览器地址栏,访问 Nexus 的服务地址,这里是 ip:8001。启动时间比较长,可以使用
docker logs -f nexus
查看日志,如果显示以下文字Started Sonatype Nexus OSS 3.25.1-04就代表成功
image
配置 Nexus
我们访问
ip:8001
就可以看到界面了。
image
登录
我们可以使用
默认账号:admin
登录,默认的密码在cat /home/nexus/admin.password
可以查看。注意不包含#号

image
当我们初次进入之后会让我们设置一下初始密码,和登录的权限。
匿名访问性
设置密码之后需要设置访问性,我们在任何没有登录的情况下,拉取(推送)制品到制品库,都算匿名访问。,在实际生产中是不安全的,我们测试可以开启。

image
创建一个 Docker 私服
点击设置,选择左侧菜单中的 Repositories ,点击 Create repository

image
使用搜索 docker 可以快速定位

image
制品库的类型
- proxy: 此类型制品库原则上 “只下载,不允许用户推送”。可以理解为缓存外网制品的制品库。例如,我们在拉取 nginx 镜像时,如果通过 proxy 类型的制品库,则它会去创建时配置好的外网 docker 镜像源拉取(有点像 cnpm)到自己的制品库,然后给你。第二次拉取,则不会下载。起到 缓存 的作用。
- hosted:此类型制品库和 proxy 相反,原则上 只允许用户推送,不允许缓存 。这是私有库的核心,只存放自己的私有镜像或制品。
- group:此类型制品库用作以上两种类型的 集合 ,将上面两个库集合为一个使用。
这里我们采用 hosted 类型,点击创建会看到一些输入框,这里做简单的解释。

image
同时我们还要设置一下权限,在 Security-Realms 的 Docker Bearer Token Realm 选择到右边的激活状态。

image
小试牛刀-登录
安装至此,我们在另一台机器上试一下。
在这里,我的架构是两台虚拟机,一台是 gitlab 和 jenkins,一台是 nginx 和 Nexus。所以,我们就在 gitlab 的机器上尝试。
配置文件
我们在 gitlab 配置文件,
vim /etc/docker/daemon.json

image
最后记得使用
systemctl restart docker
重启一下 注意这里是 json 格式,格式不能错登录
登录一下。从图中可以看出。初次登录需要输入账号密码,后续登录就不需要了。

image
小试牛刀-推送镜像到制品库
我们可以使用 docker push 推送镜像到私服上面。
docker 在推送一个镜像时,镜像的 Tag (名称:版本号) 必须开头带着镜像库的地址,才可以推送。例如下面两个镜像: 😡 local/jenkins 不能推送 😃 192.168.182.4:8082/local/jenkins 可以推送。
制作镜像
1.制作一份带镜像库地址的镜像:这个可以做,但是开销太大,需要走一遍制作流程
2.使用 docker tag 命令给已有的镜像打个标签:推荐使用,会将已有的镜像归位某个镜像库内。

image

image
推送

image
在仓库可以看到上传的

image
结语
我们在这部分实现了 docker 私服的搭建和 push,接下来我们将构建代码并且推送到私服。敬请期待吧!
- 作者:Kitety
- 链接:https://www.kitety.com/article/introduction-and-installation-of-nexus-product-library-cicd-actual-combat
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章