使用Nexus搭建Docker仓库

news/2025/3/1 8:20:53/文章来源:https://www.cnblogs.com/yswenli/p/18670723

一、背景

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

二、建立仓库

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

需要注意的有以下几点:

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

先建立好存储空间:

2.1、代理仓库

 

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

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

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

三、添加权限

四、docker客户端

4.1、配置

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

重启,使配置生效

1
systemctl daemon-reload && systemctl restart docker

4.2、登录并保存认证

1
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

1
2
3
4
5
6
7
8
9
10
11
12
13
{
        "auths": {
                "192.168.5.6:8086": {
                        "auth": "YWRtaW46MTIzNDU2"
                },
                "192.168.5.6:8087": {
                        "auth": "YWRtaW46MTIzNDU2"
                },
                "harbor.xx.cloud": {
                        "auth": "YWRtaW46SGFyYm9xMTIzNDU="
                }
        }
}

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

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

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

1
echo -n 'admin:123456' | base64

 

五、推送和拉取镜像

推送镜像

1
2
3
4
# 给构建好的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

拉取镜像

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

 

六、总结

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

没有暴露8086和8087端口

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[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

1
2
3
4
5
6
7
8
9
10
[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仓库和maven/nuget的差异甚大 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869071.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KuboardSpray v1.2.4 在 Rocky Linux 9.5 上部署 K8s 失败报错“当前资源包不支持此操作系统: Rocky 9.5”的解决办法

KuboardSpray报错日志截图进入 KuboardSpray 的docker容器实例里的当前用户目录下,再用 find . -name "*.yaml"|xargs -i grep -iHn "distribution: Rocky" {} 查找声明 RockyLinux 系统版本的地方,如下图解决办法: 只需对上图中红框处的3个配置文件进…

产品经理如何通过AI管理引领智能未来的浪潮?

在人工智能(AI)技术飞速发展的今天,产品经理的角色正经历着深刻的变革。AI不仅改变了产品开发的方式,还为产品经理提供了前所未有的工具和方法来优化产品管理流程、提升用户体验并推动业务增长。本文将探讨产品经理如何通过AI管理引领智能未来的浪潮,分享实用的策略和案例…

CANFD总线协议

1.帧起始与经典CAN类似,CAN FD数据帧的第1位也是“SOF(Start Of Frame,帧起始)”,显性电平(逻辑0) 2.仲裁域与经典CAN类似,不过将“RTR”位替换为“RRS”位。RRS是英文“Remote Request Substitution(远程请求替换)”的缩写,该位替代了远程帧请求位,并且在CAN FD中…

Chrome浏览器Selenium编程常见异常与解决方案

Selenium程序正常运行的前提是,代码能够找到浏览器,并且能够找到对应版本的驱动文件。 第一种异常表现:代码找不到ChromeDriver.exe 提示ChromeDriver.exe does not exists 第二种异常表现:浏览器与驱动文件版本不兼容 提示session not created 解决方法1: 首先下载与浏…

IDA pro 定位关键代码技巧

第一种方法:搜索特征字符串 首先按下快捷键CTRLS+S打开段选择对话框,双击STRINGS段跳转到字符串段,然后点击菜单项“Search→text”,或者按下快捷键ALT+T,打开文本搜索对话框,在String旁边的文本框中输入要搜索的字符串后点击OK按钮,稍等片刻就会定位到搜索结果。第二种…

linux获取本机和目标机器的IP和主机名

linux获取本机和目标机器的IP和主机名系统 配置 IPCentos7.9 2c4g 192.168.8.182Centos7.9 2c4g 192.168.8.182效果 简洁版优化版简洁版 #!/bin/bash #!!!!!!!!!!!!!!!!!!!!执行这个脚本时,目标端需要允许SSH连接 hostname=$(hostname) ip_address=$(hostname -I | awk {print…

学习 - Nginx -浅谈非对称加密的理解

浅谈非对称加密的理解1、客户端首次访问服务器的时候,先访问443接口后获取到“公钥”并保存在客户端。 2、客户端通过通过80端口在发送请求的时候,报文中的明文信息 通过(公钥 + 算法)加密成密位进行发送。 3、服务器端获取到密文以后,通过(私钥 + 算法)解密,获取到请求…

MySQLworkbench导入csv文件步骤方法一

方法一:优点--无需写代码;缺点--对于数据量较大的,导入很费时间,1000行大概需要三小时才能导完

65R330-ASEMI超洁MOS管65R330

65R330-ASEMI超洁MOS管65R330编辑:ll 65R330-ASEMI超洁MOS管65R330 型号:65R330 品牌:ASEMI 封装:TO-220F 批号:最新 最大漏源电流:13A 漏源击穿电压:650V RDS(ON)Max:330mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、超洁MOS管 漏电流:ua 特性:N沟道MOS管、…

MongoDB 会丢数据吗? 在次补刀MongoDB 双机热备,以及如何删除Journal log【转】

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis ,Oracle ,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号 liuaustin3 (共1220人左右 1 + 2 + 3 +4)新人会进入3群 以后会争取每天一段…

车辆总线接口设备 - VCI

TESTBASE-VCI(Vehicle Communication Interface)系列产品是经纬恒润自主研发的一组用于汽车或工业等应用领域的便携式现场通信总线接口设备,可与PC端INTEWORK系列软件配合使用,实现总线监控、测量标定和诊断刷写等功能。概述TESTBASE-VCI(Vehicle Communication Interface…