CI/CD的探索(二)使用Nexus做私人镜像仓库

313 阅读3分钟

上一篇我们讲到利用jenkins实现简化了打包流程,那么接下来,我们来使用Nexus来进行私人镜像库的搭建。

Nexus

nexus3是一个用于搭建管理私人镜像仓库的工具,同样的我们也可以通过docker镜像来进行安装运行。

安装nexus

docker run -id \
  --privileged=true \
  --name=nexus3 \
  --restart=always \
  -e INSTALL4J_ADD_VM_PARAMS="-Xms128M -Xms128M -XX:MaxDirectMemorySize=256M" \
  -p 7006:8081 -p 7002:8082 -p 7003:8083 -p 7004:8084 -p 7005:8085 \
  -v /home/nexus:/nexus-data \
  sonatype/nexus3

接下来对一些命令进行解释。

-e INSTALL4J_ADD_VM_PARAMS="-Xms128M -Xms128M -XX:MaxDirectMemorySize=256M"

这个是控制Nexus里jvm的最小可占用内存,默认是2703MB,如果是小水管的服务器(笔者买的阿里云最低配的服务器只有2G内存)有可能会开不起来,在docker ps中就会一直显示restarting,所以要把它设置低一些。详细可以看这里

-v /home/nexus:/nexus-data

把存放nexus配置文件的文件夹挂载到宿主机中。里面会有待会儿初始化登录要用的admin.password。

登录nexus

服务启动后,在浏览器输入对应的端口就能进入nexus服务了。

p1-juejin.byteimg.com/tos-cn-i-k3…

根据提示,我们可以到挂载到宿主机的nexus文件夹中找到对应的文件。用cat命令获取文件内容。登录后会让你重新设置一下密码,跟着提示走就可以了。

接下来就是设置是否能够允许匿名访问,这里设置允许。

创建仓库

接下来,来到设置这边点击创建仓库。

nexus支持的仓库种类很多,这里我们看到docker有三种,分别是hostedproxygroup

  • proxy:所有的镜像都是从代理的服务器中拉取的,代理服务器会先去目标仓库拉取镜像,然后缓存起来,这样子可以使我们的仓库不用直接通过外网来拉取镜像,提高安全性。这种仓库原则上来说只下载,不推送
  • hosted:一般只用作存储私人的镜像。
  • group:将多个仓库组合成一个仓库,只要访问组合后的group仓库,就能访问多个被合成的仓库。

因为我们要用nexus来做私人定制仓库,所以我们选用hosted来制作。http端口可以选择8082。

创建后还要配置一下访问权限。

配置daemon.json

回到宿主机中,将新建的仓库地址端口在/etc/docker/daemon.json里配置一下。

{
  "insecure-registries": [
    "127.0.0.1:7002"
  ]
}

这里7002是对应nexus里面的8082,也就是我们刚刚创建仓库的端口。配置好后重启docker

systemctl restart docker

通过docker login我们可以测试一下是否能登录成功。

配置jenkins

nexus配置好后,我们可以回到jenkins进行配置。

配置nexus登录密码

因为push到对应镜像仓库需要权限,这里我们用账号密码来进行配置权限就好了。

Untitled 9.png

点击add添加一条jenkins秘钥,这里就输入nexus admin和其密码就好了。

Untitled 10.png

然后设置对应的变量名。

Untitled 11.png

修改jenkins构建脚本

接下来就可以修改原来的构建脚本了。

Untitled 12.png

运行jenkins任务

修改完后直接构建。

Untitled 13.png

来到宿主机中,我们先把已有的127.0.0.1:7002/jenkins-test的image给删掉,然后通过docker pull 127.0.0.1:7002/jenkins-test来进行拉取。可以看到能成功拉取我们已经推上去的image。

结语

讲到这里,CI持续发布的流程已经走通了,接下来就会走CD持续发布的流程。

参考