• Nexus3 安装 及 配置 docker 私有、代理 仓库


    一、Nexus3 私库管理器

    Nexus全称Sonatype Nexus,是一种特殊的远程仓库,它是架在局域网内的仓库服务。可以用于局域网中的 docker、maven、npm、yum 等私服代理,并且支持私有仓库。

    下面通过实验来认识下 Nexus3 私库管理器,以及配置 docker 私有、代理 仓库。

    二、Nexus3 安装

    本文通过 docker-compose 的方式快速搭建 Nexus3 环境,所以在实验前请确保已经安装好了 docker 和 docker-compose 环境。

    • 创建数据挂载目录并修改权限:
    mkidr -p /opt/nexus/data && chmod 777 /opt/nexus/data
    
    • 1
    • 创建 docker-compose.yml 文件,写入以下内容:
    version: '2.0'
    services:
      nexus:
        restart: always
        image: sonatype/nexus3:3.37.3
        container_name: nexus3
        volumes:
          - /opt/nexus/data:/nexus-data
        ports:
          - "8081:8081"
          - "6000:6000"
          - "6001:6001"
        environment:
          - "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs"
          - TZ=Asia/Shanghai
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    其中 8081 为 Nexus3 web页面的端口,6000 和 6001 分别为 docker 代理和私服的端口,这个是后面配置中指定的,这里可以预先开放端口。由于Nexus3 依赖于JDK,因此环境变量中指定了JVM的一些参数,可以根据自己服务器的实际情况修改。

    • 启动服务
    docker-compose up -d
    
    • 1

    在这里插入图片描述

    服务启动较慢,需要等待一会,可以查看 log ,看是否成功启动:

    docker-compose logs
    
    • 1

    出现以下日志,则证明启动成功!

    在这里插入图片描述

    • 浏览器访问 http://ip:8081:

    在这里插入图片描述

    • 点击右上角 Sign in 开始登录,用户为 admin ,密码在 /nexus-data/admin.password 中:
    docker exec -it nexus3 cat /nexus-data/admin.password && echo
    
    • 1

    在这里插入图片描述

    • 登录成功后 点击 next ,需要修改密码,修改个自己的密码:

    在这里插入图片描述

    • 下面弹出的是否启用匿名访问,我这里选是:

    在这里插入图片描述

    • 最后点击 Finish 环境就搭建完成了,下面开始配置 docker 私有、代理仓库吧。

    三、配置 docker 私有、代理 仓库

    Nexus3 中对于docker 的支持又 hosted(自托管私有仓库)、proxy(代理)、group(聚合)三种模式,其中 group 模式可以将多个模式集中成一个地址访问,比如使用 hosted 模式搭建私有的 docker 仓库,一些项目中的镜像都上传到这个地方。使用 proxy 模式代理远程的仓库比如 dockerHub ,可以在局域网中下载外网的镜像。此时就可以通过 group 默认将hosted模式和proxy模式聚合成一个地址访问,这样在下载镜像的时候如果是私服的镜像直接在私服拉取了,如果没有再通过代理拉取远程的镜像。

    下面开始搭建上面的模式:

    1. 首先我们先创建三个 Blob Stores ,分别存放三种模式产生的文件:

    首先点击上方的设置图标,选择 Blob Stores,然后点击 右边的 Create Blob Stores

    在这里插入图片描述

    • 创建 docker-hosted

    在这里插入图片描述

    • 创建 docker-proxy

    在这里插入图片描述

    • 创建 docker-group

    在这里插入图片描述

    • 创建完成后在列表中可以看到

    在这里插入图片描述

    2. 下面开始创建 hosted 模式私服仓库

    点击当前页的 Repositories ,然后点击 左上角的 Create repositories

    在这里插入图片描述

    选中 docker(hosted) 模式:

    在这里插入图片描述
    指定基本信息及配置:

    在这里插入图片描述
    其中开放协议使用的 HTTP,端口就是上面安装时候释放的 6001 ,下面 Blob store 选择上面创建的:

    在这里插入图片描述
    最后点击最下面的 Create repositories完成创建。

    2. 接着创建 proxy 模式代理仓库

    选中 docker(proxy),代理模式可以不用开放协议端口,因为后面拉取镜像统一使用 group 模式进行拉取:

    在这里插入图片描述

    同样填写信息:

    在这里插入图片描述

    下面需要填写一个代理地址,可以指定为:https://registry-1.docker.io,下面 Docker Index 可以使用 Docker Hub 的:

    在这里插入图片描述

    下面 Blob store 同样使用上面创建的:

    在这里插入图片描述
    最后点击最下面的 Create repositories完成创建。

    3. 接着创建 group 模式代理仓库

    选中 docker(group)

    在这里插入图片描述

    同样填写信息,注意端口需要使用 6000 了:

    在这里插入图片描述

    下面 Blob store 同样使用上面创建的,注意下面的 group 需要选中上面创建好的两种模式:

    在这里插入图片描述
    最后点击最下面的 Create repositories完成创建。

    到这就已经创建好三种模式了,可以在列表中看到创建的仓库:

    在这里插入图片描述

    下面就可以在 docker 客户端指定仓库为上面创建的仓库了,下面继续测试一下。

    四、docker 客户端测试

    修改 /etc/docker/daemon.json 文件,在 insecure-registries 中,增加私有配置:

    {
      "registry-mirrors": [
      		"https://你的阿里云id.mirror.aliyuncs.com"
       ],
      "insecure-registries": [
        "192.168.40.171:6000",
        "192.168.40.171:6001"
       ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    重启 docker

    systemctl restart docker
    
    • 1

    登录 私服仓库:

    docker login -u admin -p nexus 192.168.40.171:6000
    
    docker login -u admin -p nexus 192.168.40.171:6001
    
    • 1
    • 2
    • 3

    此时如果报 failed with status: 401 Unauthorized 异常:

    在这里插入图片描述
    这个是没有使用 SSL证书和域名,需要修改下 Realms 中的配置:

    在这里插入图片描述
    下面再进行登录就可以了:

    在这里插入图片描述

    拉取镜像

    docker pull 192.168.40.171:6000/nginx
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    可以看到已经拉取到镜像,可以在 nexus3 的 web 页面看到该镜像:

    在这里插入图片描述

    上传镜像

    首先标记镜像并更换个名称方便看到效果

    docker tag 192.168.40.171:6000/nginx:latest 192.168.40.171:6001/test/nginxbxc:latest
    
    • 1

    在这里插入图片描述

    推送镜像

    docker push 192.168.40.171:6001/test/nginxbxc:latest
    
    • 1

    在这里插入图片描述

    查看 web 页面:

    在这里插入图片描述

  • 相关阅读:
    CRM系统的客户细分有什么作用?
    Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器
    C语言基础一
    可观测性-Metrics-系统CPU、进程CPU指标
    P2320 [HNOI2006] 鬼谷子的钱袋
    函数基础部分
    el-input 设置type为number时,隐藏后面上下箭头以及输入文字光标上移的情况
    计数排序基础思路
    直面货到人拣选未来,极智嘉PopPick方案成就行业发展新抓手
    【史上最简单】idea 打开 eclipse 项目
  • 原文地址:https://blog.csdn.net/qq_43692950/article/details/125471729