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

  • Post author:
  • Post category:其他




一、安装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

上传成功可以到仓库查看:

在这里插入图片描述

在这里插入图片描述



版权声明:本文为weixin_37558119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。