当前位置:   article > 正文

jenkins从入门到生产教程-基于docker安装nexus(六)_error pulling image configuration: unknown blob

error pulling image configuration: unknown blob

1、安装nexus

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

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

docker pull sonatype/nexus3
  • 1

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

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

mkdir -p /usr/local/docker/nexus/nexus-data
chmod 777 /usr/local/docker/nexus/nexus-data
  • 1
  • 2

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

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
  • 2
  • 3
  • 4
  • 5
  • 6

1.5、设置nexus密码

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

cat admin.password 
  • 1

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

在这里插入图片描述

2、nexus安装docker仓库

2.1、创建Repositories

在这里插入图片描述

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

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

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

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

在这里插入图片描述

2.3、创建hosted仓库

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

在这里插入图片描述

2.4、创建proxy仓库

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

在这里插入图片描述

2.5、创建group仓库

在这里插入图片描述

在这里插入图片描述

2.6、docker服务设定

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

vi /etc/docker/daemon.json
  • 1

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

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

2.6.1、重启docker

直接执行以下命令重启docker

systemctl daemon-reload
systemctl restart docker
  • 1
  • 2

2.6.2、验证登录

 docker login 10.10.10.169:8082
  • 1

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

在这里插入图片描述

2.6.3、验证proxy

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

docker pull 10.10.10.169:8083/redis
  • 1

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

在这里插入图片描述

2.6.4、验证hosted

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

docker pull nginx
  • 1

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

 docker push 10.10.10.169:8082/docker.io/nginx
  • 1

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

在这里插入图片描述

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
  • 1

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

在这里插入图片描述

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

docker pull 10.10.10.169:8082/primetoninc/jdk 
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/878227
推荐阅读
相关标签
  

闽ICP备14008679号