1、安装nexus

1.1、从中央仓库获取nexus最新版本

直接启动docker以后在安装docker的服务器上执行以下脚本:

docker pull sonatype/nexus3

1.2、创建数据目录以及授权

直接使用以下语句创建nexus数据目录,同时授予权限:

mkdir -p /usr/local/docker/nexus/nexus-data
chmod 777 /usr/local/docker/nexus/nexus-data

1.3、启动nexus镜像

然后我们直接使用以下的命令启动我们的nexus镜像:

docker run -p 8081:8081 -p 8082:8082 -p 8083:8083 --privileged=true --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data docker.io/sonatype/nexus3

1.4、设置放行端口

直接执行以下命令放行端口

# 设置放行端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8082/tcp --permanent
firewall-cmd --zone=public --add-port=8083/tcp --permanent
# 刷新放行端口
firewall-cmd --reload

1.5、设置nexus密码

首先我们直接进入到我们前面设置的“/usr/local/docker/nexus/nexus-data”这个目录,然后在里面我们可以找到如下的文件,我们直接使用cat命令打开即可知道密码:

cat admin.password 

然后我们直接访问http://10.10.10.169:8081/,然后我们直接输入admin和前面获取的密码,然后做一次密码的修改我们就可以登录到我们的nexus了。

jenkins从入门到生产教程-基于docker安装nexus(六)_运维

2、nexus安装docker仓库

2.1、创建Repositories

jenkins从入门到生产教程-基于docker安装nexus(六)_运维_02

2.2、选择仓库类型【hosted、proxy、group】

  • hosted:本地存储,即同docker官方仓库一样提供本地私服功能

  • proxy:提供代理其他仓库的类型,如docker中央仓库

  • group:组类型,实质作用是组合多个仓库为一个地址

jenkins从入门到生产教程-基于docker安装nexus(六)_运维_03

2.3、创建hosted仓库

指定docker仓库名称、指定一个端口8082来通过http的方式访问仓库、勾选是否支持docker API VI,然后点击create repository 按钮创建hosted仓库

jenkins从入门到生产教程-基于docker安装nexus(六)_运维_04

2.4、创建proxy仓库

录入proxy仓库名称,然后在 Remote storage中输入需要代理的镜像仓库地址,这里我们选用网易的镜像地址:https://mqs3roi5.mirror.aliyuncs.com,因为docker 的中国境内的仓库地址有时候https://registry.docker-cn.com 有时不稳定会出现连接超时,Docker Index 选择Use Docker Hub

jenkins从入门到生产教程-基于docker安装nexus(六)_nginx_05

2.5、创建group仓库

jenkins从入门到生产教程-基于docker安装nexus(六)_docker_06

jenkins从入门到生产教程-基于docker安装nexus(六)_nginx_07

2.6、docker服务设定

由于我们使用的时http而不是https 故需要在启动参数文件中设置,因此我们需要在修改daemon.json的配置信息

vi /etc/docker/daemon.json

修改完成以后的信息如下所示:

{
  "registry-mirrors": ["https://mqs3roi5.mirror.aliyuncs.com"],
  "insecure-registries":["10.10.10.169:8082","10.10.10.169:8083"]
}

2.6.1、重启docker

直接执行以下命令重启docker

systemctl daemon-reload
systemctl restart docker

2.6.2、验证登录

 docker login 10.10.10.169:8082

在登录需要输入登录用户名及密码,即为你的nexus3的登录用户名及密码,然后我们可以看到如下的效果:

jenkins从入门到生产教程-基于docker安装nexus(六)_jenkins_08

2.6.3、验证proxy

直接运行以下的脚本,然后就可以验证我们的proxy了

docker pull 10.10.10.169:8083/redis

此docker私服仓库中时没有redis的镜像的,故nexus3会从中央仓库中去拉取镜像,拉取成功之后,查看nexus3的proxy仓库发现已经存在了redis镜像

jenkins从入门到生产教程-基于docker安装nexus(六)_redis_09

2.6.4、验证hosted

首先我们需要下载一个本地镜像,我们现在就从阿里的docker仓库下载一个nginx镜像

docker pull nginx

下载完成以后会看到如下所示的结果:

jenkins从入门到生产教程-基于docker安装nexus(六)_nginx_10

接着我们给这个nginx打一个tag

 docker tag docker.io/nginx:latest  10.10.10.169:8082/docker.io/nginx:latest

然后我们会看到如下所示的tag

jenkins从入门到生产教程-基于docker安装nexus(六)_docker_11

最后上传我们的nginx镜像到nexus

 docker push 10.10.10.169:8082/docker.io/nginx

然后我们会在nexus查到刚刚上传的nginx的镜像:

jenkins从入门到生产教程-基于docker安装nexus(六)_jenkins_12

3、常见问题

3.1、error pulling image configuration: unknown blob

若我们docker pull ip:port/redis出现上面的错误,那就有可能我们在配置proxy的代理的时候,这个代理的镜像地址有问题,推荐使用阿里云的docker镜像地址。

3.2、拉取镜像

如果我们需要从阿里云的docker服务器上拉取镜像我们则使用proxy的端口来进行镜像的拉取,若我们的镜像是自己本地打包上传到nexus上的那么我们则使用hosted的端口来进行镜像的拉取,例如我们要拉取JDK:

docker serch jdk

我们会看到如下的查询结果页:

jenkins从入门到生产教程-基于docker安装nexus(六)_运维_13

然后我们这时候假设我们需要下载的时候docker.io/primetoninc/jdk,那这时候我们就使用下面的代码的命令来进行拉取,千万不要加上docker.io,否则就没办法拉取

docker pull 10.10.10.169:8082/primetoninc/jdk