nexus搭建私有docker仓库的方法

 更新时间:2024年03月15日 11:17:30   作者:天草二十六_简村人  
Nexus之前已支持了maven/npm/composer,由于docker仓库和前面几个存在比较大的差异,所以我特此记录下走过的坑,本文重点介绍nexus搭建私有docker仓库的相关知识,感兴趣的朋友一起看看吧

一、背景

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私有仓库搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用docker创建集成服务lnmp环境

    使用docker创建集成服务lnmp环境

    本篇文章主要介绍了使用docker创建集成服务lnmp环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • linux和docker下mysql安装方式

    linux和docker下mysql安装方式

    本文详细介绍了在Linux系统中通过命令行安装MySQL的步骤,包括编辑yum源、下载并启动MySQL服务、登录和修改密码等操作,同时,文中也提供了在Docker环境下安装MySQL的流程,涵盖了拉取MySQL镜像、查看运行状态及登录MySQL的方法
    2024-09-09
  • MySQL容器中docker-entrypoint-initdb.d目录的使用

    MySQL容器中docker-entrypoint-initdb.d目录的使用

    这篇文章主要介绍了MySQL容器中docker-entrypoint-initdb.d目录的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • IDEA使用Docker插件远程部署项目到云服务器的方法步骤

    IDEA使用Docker插件远程部署项目到云服务器的方法步骤

    这篇文章主要介绍了IDEA使用Docker插件远程部署项目到云服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 卸载Docker时遇到问题的解决方案

    卸载Docker时遇到问题的解决方案

    这篇文章主要介绍了卸载Docker时遇到问题的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Docker安装FTP服务器的方法步骤

    Docker安装FTP服务器的方法步骤

    FTP是一种传输协议,本文主要介绍了Docker安装FTP服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • docker Get https://registry-1.docker.io/v2/: net/http: request canceled 报错

    docker Get https://registry-1.docker.io/v2/: 

    本文主要介绍了docker Get https://registry-1.docker.io/v2/: net/http: request canceled 报错,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • docker磁盘空间不足的解决办法

    docker磁盘空间不足的解决办法

    linux的磁盘空间挂载后,需要迁移一下docker 镜像原本的位置,因此有此实践,分享操作过程,文章通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Docker 配置固定IP及桥接的实现方法

    Docker 配置固定IP及桥接的实现方法

    这篇文章主要介绍了Docker 配置固定IP和桥接的实现方法的相关资料,这里详细介绍了Docker 的四种网络模式及如何实现桥接的案例,需要的朋友可以参考下
    2016-10-10
  • Docker Swarm入门实例详解

    Docker Swarm入门实例详解

    这篇文章主要介绍了Docker Swarm 入门实例详解的相关内容,小编觉得十分不错,在这里给大家分享下,需要的朋友可以参考。
    2017-10-10

最新评论