nexus搭建私有docker仓库的方法,


目录
  • 一、背景
  • 二、建立仓库
    • 2.1、代理仓库
    • 2.2、私有仓库(既可以pull镜像,又可以push镜像)
    • 2.3、组合仓库(仅限于pull镜像)
  • 三、添加权限
    • 四、docker客户端
      • 4.1、配置
      • 4.2、登录并保存认证
    • 五、推送和拉取镜像
      • 六、总结
        • 6.1、走过的坑一:连接拒绝
        • 6.2、404 Not Found
      • 六、说在最后的话

        一、背景

        Nexus之前已支持了maven/npm/composer,由于docker仓库和前面几个存在比较大的差异,所以我特此记录下走过的坑。希望能对后来者有所帮助~~(当然,docker私有仓库,大多数是推荐使用harbor,因为我这里的某些历史原因,就沿用nexus)

        二、建立仓库

        依次建立代理仓库、私有仓库、组合仓库。

        需要注意的有以下几点:

        • 代理仓库可以添加多个
        • 私有仓库和组合仓库的端口号,必须暴露出去
        • 组合仓库需要把代理仓库和私有仓库组合起来

        先建立好存储空间:

        2.1、代理仓库

        https://nbi3meca.mirror.aliyuncs.com

        http://f1361db2.m.daocloud.io

        2.2、私有仓库(既可以pull镜像,又可以push镜像)

        2.3、组合仓库(仅限于pull镜像)

        这里的顺序是:先二方库私有库,再是三方库代理库。

        三、添加权限

        四、docker客户端

        4.1、配置

        {
        # 对应组合仓库的ip和端口
          "registry-mirrors": ["http://192.168.5.6:8087"],
        # 需要把组合仓库和私有仓库都加入进来
        # 因为在推送镜像的时候是使用私有仓库,在拉取镜像的时候是使用组合仓库
           "insecure-registries": [
                 "192.168.5.6:8086",
                 "192.168.5.6:8087"]
        }

        重启,使配置生效

        systemctl daemon-reload && systemctl restart docker

        4.2、登录并保存认证

        docker login 192.168.5.6:8086 -u admin -p 123456
        docker login 192.168.5.6:8087 -u admin -p 123456

        cat ~/.docker/config.json

        {
                "auths": {
                        "192.168.5.6:8086": {
                                "auth": "YWRtaW46MTIzNDU2"
                        },
                        "192.168.5.6:8087": {
                                "auth": "YWRtaW46MTIzNDU2"
                        },
                        "harbor.xx.cloud": {
                                "auth": "YWRtaW46SGFyYm9xMTIzNDU="
                        }
                }
        }

        好处是不用重复认证,你可以使用如下方法进行解密。

        echo -n  "YWRtaW46MTIzNDU2" | base64 -d
        echo -n  "YWRtaW46SGFyYm9xMTIzNDU=" | base64 -d

        同理,你更可以进行主动加密。

        echo -n 'admin:123456' | base64

        五、推送和拉取镜像

        推送镜像

        # 给构建好的image进行打tag
        docker tag xxx/devops-service:1.0.7 192.168.5.6:8086/xxx/devops-service:1.0.7
        # 推送到指定的docker仓库
        docker push 192.168.5.6:8086/xxx/devops-service:1.0.7

        拉取镜像

        docker pull 192.168.5.6:8086/xxx/devops-service:1.0.7

        六、总结

        6.1、走过的坑一:连接拒绝

        没有暴露8086和8087端口

        nexus是使用docker搭建的,需要进行一番修改。

        [root@maven3 ~]# vi docker-compose.yml 
        version: '3' 
        services: 
          nexus: 
            restart: always 
            image: sonatype/nexus3 
        #    image: docker.io/sonatype/nexus3
            container_name: nexus3 
            ports:
              - 8081:8081
              - 8082:8082
              - 8083:8083
              - 8084:8084
              - 8085:8085
        # 新增8086和8087两个端口号
              - 8086:8086 
              - 8087:8087
            volumes: 
              - /opt/nexus:/opt/sonatype/nexus:Z
              - /data/nexus-data:/nexus-data:Z

        重启nexus

        [root@maven3 ~]# docker-compose down
        Stopping nexus3 ... done
        Removing nexus3 ... done
        Removing network root_default
        [root@maven3 ~]# docker-compose up -d
        Creating network "root_default" with the default driver
        Creating nexus3 ... done
        [root@maven3 ~]# docker ps
        CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                                        NAMES
        99f41bdf4993        sonatype/nexus3                 "sh -c ${SONATYPE_..."   14 seconds ago      Up 13 seconds       0.0.0.0:8081-8087->8081-8087/tcp             nexus3

        确保8086和8087端口都暴露出去了

        6.2、404 Not Found

        是因为没有Realms:Docker Bearer Token Realm进行激活。

        六、说在最后的话

        • 一定要弄清楚端口号
        • docker仓库和npm/maven/composer的差异甚大 

        到此这篇关于nexus搭建私有docker仓库的文章就介绍到这了,更多相关docker私有仓库搭建内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

        您可能感兴趣的文章:
        • 利用Docker搭建Nexus私有仓库实现Maven私服
        • 使用Nexus创建Docker仓库的方法步骤
        • docker部署nexus并启用https方式
        • mac通过docker一键部署Nexus3的过程记录
        • 利用nexus作为私库进行代理docker,进行上传和下载镜像操作

        相关内容