kubernetes实战篇之nexus oss服务器部署及基于nexus的docker镜像仓库搭建

系列目录

Nexus oss仓库管理平台搭建

Nexus是一款仓库管理工具,支持Npm,bower,maven,nuget,apt,yum甚至docker,helm等各种仓库,说的通俗以下,就是私服镜像仓库.并且有免费版,OSS版即为免费版,下载的时候请注意版本的选择.

下载地址

往下面滚动页面,可以看到Choose your Nexus,有osx,windows和unix版本可供选择.这里我选择的是windows版本.

下载的内容是一个压缩包,下载完成后把压缩包解压.解压后有两个文件夹,我们进入nexus-3.x.x文件夹下的bin目录,我们在当前目录下打开cmd或者从任意位置打开cmd,然后cd到上述目录.执行nexus.exe /run来安装nexus

注册服务

安装完成以后,执行nexus.exe /install Nexus Service来注册服务

启动服务

执行命令nexus.exe /start Nexus Service来启动服务

通过以上操作,实际上是往windows服务里面添加了一个名字叫作nexus service的服务,我们可以通过powerhsell命令Get-Service "nexus service"来找到这个服务,通过Restart-Service "nexus service"来重启它.

以上执行完成以后,就可以通过打开浏览器,输入localhost:8081来访问它,也可以通过其它局域网主机使用IP:8081方式来访问它.

img

通过首页,我们可以看到Nexus罗列出来的支持的仓库类型,非常丰富.

注意,大家可能看到我访问的端口号并不是8081而是8443,这是因为我设置的http自动跳转到https,并且指定的https端口为8443,这里之所以要启用https是因为下面即将讲到的docker镜像上传需要使用https.这部分内容将在下一节讲解.

登陆

注意,如果没有登陆,Nexus并不是以显著的方式提示你登陆,但是非登陆用户功能受限.要想实现一些管理功能,必须登陆.登陆需要点击右上角sign in按钮.默认登陆用户名为admin密码为admin123.

Nexus搭建docker镜像仓库

上一节我们讲了如何在windows下安装nexus,本节我们讲解如何来搭建nexus来搭建docker镜像仓库.

我们进入web管理界面,点击齿轮图标,然后点击Repositories.如下图示

img

注意,以上操作需要登陆.登陆方式为点击右上角sign in,然后用默认admin,admin123登陆.详细请见上一节内容

然后点击create repository按钮.如下图操作

img

页面出来了非常多的仓库类型供选择,由于我们要创建的是docker仓库,这里选择的是docker hosted

img

点击后出现如下界面

img

配置上面填写的内容,填写完成后我们点击左下角create repository来创建仓库

nexus服务器支持https配置

由于我们使用的是https方式通讯,因此我们需要对nexus服务器进行配置,以支持https.由于我们的证书是自己生成的,因此docker客户端也需添加对自己生成key的信任.

服务端开启监听ssl协议端口

进到nexus-xxx-xxx目录下(前面一节提到的从官网下载的nexus压缩包解压后的一个目录),进到ect目录下,里面有一个nexus-default.properties文件,用文本编辑器打开它

在# Jetty section注释下面添加一行,内容为application-port-ssl=8443

在nexus-args一行尾部添加,${jetty.etc}/jetty-http-redirect-to-https.xml,以指示服务器自动将http跳转到https

生成证书秘钥

网上有很多生成密码证书的博客文章,使用的工具也不尽相同.这里,我们使用java jkd自带的keytool.exe来生成ssl证书.

进入到nexus-xxx-xxx目录下的ect/ssl目录下,执行以下命令:

keytool -genkeypair -keystore keystore.jks -storepass nexus3 -keypass nexus3 -alias jetty -keyalg RSA -keysize 2048 -validity 5000 -dname "CN=${NEXUS_DOMAIN}, OU=Example, O=Sonatype, L=Unspecified, ST=Unspecified, C=US" -ext "SAN=DNS:${NEXUS_DOMAIN},IP:${NEXUS_IP_ADDRESS}" -ext "BC=ca:true"

其中${NEXUS_IP_ADDRESS}替换为你的实际ip地址,${NEXUS_DOMAIN}如果没有域名可以随便填写

需要注意的是,如果由于环境变量配置问题导致keytool命令找不到,则需要显式指定keytool.exe完整路径,然后后面带上要执行的命令.

修改jetty-https.xml

进入到nexus-xxx-xxx目录下的etc/jetty目录下,用文本编辑器打开jetty-https.xml文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspgyw.html