docker-compose安装Nexus3,配置docker私有、代理、组合仓库

一、安装Nexus3

1、准备工作

安装docker和docker-compose
https://blog.csdn.net/weixin_37558119/article/details/108777662

2、docker-compose.yaml 配置

注:8081端口是开放给后台使用的,5000和5001端口是开放给仓库使用的,换成别的端口也可以,只要配置docker仓库时填写开放的端口就可以了

version: '3'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus3
    ports:
      - 8081:8081
      - 5000:5000
      - 5001:5001
    volumes:
      - /usr/local/docker/nexus/nexus-data:/nexus-data

3、启动nexus

1)使用 docker-compose up -d 启动
2)启动后访问 http://192.168.40.147:8081/
在这里插入图片描述

3)登录用户名admin密码通过/usr/local/docker/nexus/nexus-data/admin.password 查看
在这里插入图片描述
登录后可修改密码为好记的密码

4、安装可能遇到问题

1)问题:
启动后通过docker ps -a查看nexus3的状态为退出,在docker-compose.yaml同级目录下可查看其启动的日志,通过 docker-compose logs -f 命令查看,发现没有权限访问宿主机创建文件目录

解决方法:
可手动创建 mkdir /nexus-data/instances 创建完后再查看状态为启动了
如果还未解决:
进到/usr/local/docker/nexus 授权 chmod 777 nexus-data/

二、配置docker仓库

1、概述

1)Nexus3 提供了的3种类型的Docker仓库,前两者都可以创建多个仓库,最后一个则可以将他们全部聚合到一个URL来访问。
docker (hosted): 自托管
docker (proxy): 代理
docker (group): 聚合
建议为你想要创建的每个新仓库创建一个新的blob store。这样,每个仓库的数据都将位于/nexus-data中的不同文件夹中(在Docker容器内)

2)下面打算创建三个仓库 docker-hub-hosted, docker-hub-proxy, docker-hub-group
分别创建三个blobs: docker-hub-hosted, docker-hub-proxy, docker-hub-group
group类型的docker仓库,是一个聚合类型的仓库。它能够仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。

2、创建Blob Stores

1)填写name,路径会自动生成,你也可以自己修改挂载地址
在这里插入图片描述
2)分别创建三个Blob
在这里插入图片描述

3、配置仓库

1)配置hosted类型的

hosted类型仓库用作我们的私有仓库。注意红框中的配置
在这里插入图片描述

点击 Repository下面的 Repositories - Create repository - docker(hosted) :

  • Name: 输入一个简洁直观的名字
  • Online: 勾选。这个开关可以设置这个Docker repo是在线还是离线。
  • Repository Connectors
    下面包含HTTP和HTTPS两种类型的port的作用?
    连接器允许docker客户端直接连接到docker仓库,并实现一些请求操作,如docker pull, docker push, API查询等。
    如果勾选并填写端口, Nexus就会启动一个监听到该端口的连接器。
    我们使用http配置5001端口。
  • Allow anonymous docker pull
    勾选。这样的话就允许匿名访问了,不勾选则执行docker pull或 docker push之前,都要先登录:docker login
  • Docker Registry API Support
    Docker registry默认使用的是API v2, 但是为了兼容性,我们可以勾选启用API v1。
  • Storage
    Blob store,我们下拉选择前面创建好的专用blob:docker-hub-hosted
  • Hosted
    开发环境,我们运行重复发布,因此Delpoyment policy 我们选择Allow redeploy。

2)配置proxy类型的

proxy类型仓库,可以帮助我们访问不能直接到达的网络,如另一个私有仓库,或者国外的公共仓库,如Google cloud registry。注意红框中的配置,http不用写,我们一会通过group聚合提供仓库访问
在这里插入图片描述

  • 点击 Repository下面的 Repositories - Create repository - docker(proxy) :

  • Name: 输入一个简洁直观的名字

  • Online: 勾选。这个开关可以设置这个Docker repo是在线还是离线。

  • Repository Connectors: 不设置。
    – Allow anonymous docker pull
    勾选。这样的话就允许匿名访问了,不勾选则执行docker pull或 docker push之前,都要先登录:docker login

  • Docker Registry API Support
    Docker registry默认使用的是API v2, 但是为了兼容性,我们可以勾选启用API v1。

  • Proxy
    Remote Storage: 当配置docker hub的proxy时,这里填写: https://registry-1.docker.io
    Docker Index: 当配置docker hub的Docker Index时,点选Use Docker Hub或者填写:https://index.docker.io/

  • Storage
    Blob store,我们下拉选择前面创建好的专用blob:docker-hub-proxy

3)配置group类型的

group类型的docker仓库,是一个聚合类型的仓库。它可以将前面我们创建的2个仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。注意红框中的配置,5000端口为部署nexus时开放的端口。
在这里插入图片描述

  • 点击 Repository下面的 Repositories - Create repository - docker(group) :

  • Name: 输入一个简洁直观的名字,

  • Online: 勾选。这个开关可以设置这个Docker repo是在线还是离线。

  • Repository Connectors
    这里我们勾选http并且填写端口 5000, Nexus就会启动一个监听到5000端口的连接器。

  • Allow anonymous docker pull
    勾选。这样的话就允许匿名访问了,不勾选则执行docker pull或 docker push之前,都要先登录:docker login

  • Docker Registry API Support
    Docker registry默认使用的是API v2, 但是为了兼容性,我们可以勾选启用API v1。

  • Storage:选择专用的blob存储docker-hub-hosted

  • group : 将左边选择需要添加的仓库,添加到右边的members下;

三、客户端使用仓库

1、客户端配置

打开/etc/docker/daemon.json文件,增加仓库访问地址。

{
  "registry-mirrors": [
    "https://atd4ffxf.mirror.aliyuncs.com"
  ],
  "insecure-registries": [
    "192.168.40.147:5000",
    "192.168.40.147:5001"
  ]
}

注意:

  1. 配置文件格式要写正确要不然一会docker重启会失败。
  2. 配置5000用于拉取镜像,5001用于上传私有镜像。如果不配登录不上。
  3. 可能遇到的问题:如果不使用SSL证书和域名,那么可能会遇到的问题: failed with status: 401 Unauthorized
    解决方案:在Nexus上点击 Security->Realms->Docker Bearer Token Realm。
    在这里插入图片描述

2、重新载入配置和重启docker

$ systemctl daemon-reload
$ systemctl restart docker

3、登录docker仓库

根据提示输入用户名和密码,这里用的是admin管理员账号,可以新建角色和账号进行登录。出现如下提示则登录成功,证明仓库可用了。需要pull登录5000,需要push登录5001.

$ docker login 192.168.40.147:5000
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

注意:登录如果提示如下错误,则是没有配置仓库访问地址,执行1进行配置就行了。

$ docker login 192.168.40.147:5000
Username: admin
Password: 
Error response from daemon: Get https://192.168.40.147:5000/v2/: http: server gave HTTP response to HTTPS client

4、测试仓库的使用

1)通过代理pull

$ docker pull 192.168.40.147:5000/hello-world
Using default tag: latest
latest: Pulling from hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Status: Downloaded newer image for 192.168.40.147:5000/hello-world:latest
192.168.40.147:5000/hello-world:latest

进入浏览器可以查看刚才下载的镜像

在这里插入图片描述

在这里插入图片描述
2)push到私库
例如push sonatype/nexus3的镜像

# 查看镜像
$ docker image ls
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
192.168.40.147:5000/tomcat            latest              891fcd9c5b3a        5 days ago          647MB
prom/blackbox-exporter                master              95508eae45d5        7 days ago          20.9MB
192.168.40.147:5000/sonatype/nexus3   latest              0ffbaec5b098        2 weeks ago         634MB
sonatype/nexus3                       latest              0ffbaec5b098        2 weeks ago         634MB
prom/prometheus                       latest              cdfc440228d0        5 weeks ago         168MB

# 修改tag
$ docker tag  sonatype/nexus3:latest 192.168.40.147:5001/sonatype/nexus3:latest

# 上传镜像到私库
$ docker push 192.168.40.147:5001/sonatype/nexus3
The push refers to repository [192.168.40.147:5001/sonatype/nexus3]
2c321cafea42: Pushed 
e9010fe1685e: Pushed 
b7b591e3443f: Pushed 
ccf04fbd6e19: Pushed 
latest: digest: sha256:f6f2a2f36332d5757c19eb7416e30b02a0351550a4f55572346e037515c69d77 size: 1158

上传成功可以到仓库查看:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值