【Docker】解决访问难题:搭建私有的Docker镜像代理

什么是Nexus 3

Nexus 3是由Sonatype公司开发的一款强大的包管理和仓库服务工具,它广泛应用于自动化的构建系统和持续集成/持续部署(CI/CD)流程中。Nexus 3支持多种包格式,包括但不限于Maven、npm、Docker、NuGet等,能够为软件开发中的依赖管理提供一站式解决方案。

主要特点

多种格式支持:Nexus 3能够管理多种格式的二进制文件和源代码包,适用于不同编程语言和构建工具。
代理和托管仓库:Nexus 3允许用户创建代理仓库来缓存远程仓库中的组件,同时也可以创建托管仓库用于存储和管理内部生成的组件。
安全性和权限管理:Nexus 3提供细粒度的权限控制,支持与外部用户管理系统(如LDAP)集成,确保仓库的安全访问。
高可用性和大规模部署:支持高可用性部署配置,能够处理大量的请求和存储大量的组件,适合大规模企业环境。
仓库健康检查和优化:提供仓库健康检查工具和数据优化工具,帮助维护仓库的稳定性和效率。
界面和集成:提供了一个用户友好的界面,方便用户管理仓库和组件。同时,Nexus 3可以与Jenkins、Bamboo等CI/CD工具集成,优化开发流程。

代理仓库概念

代理仓库在 Nexus 3 中扮演着至关重要的角色,它主要用于以下几个方面:
缓存远程依赖:代理仓库可以缓存从远程仓库(如 Maven 中央仓库)下载的依赖,减少对原始源的直接访问,加快本地访问速度。
网络优化:通过减少对远程源的访问,代理仓库有助于降低跨境访问延迟和带宽消耗。
依赖隔离:在网络不稳定或远程源不可用时,代理仓库可以作为依赖的备份源,保证构建的连续性。
访问控制:可以对代理仓库设置访问权限,控制谁可以下载或上传依赖。

代理仓库工作原理

在这里插入图片描述

部署方式

Nexus 3可以通过多种方式部署,包括传统的安装包方式、Docker容器化部署,以及Kubernetes等容器编排平台。容器化部署提供了更高的灵活性和可移植性,使得Nexus 3可以轻松地在不同环境中运行。

部署

安装:

  1. 登录1Panel后再应用商店中找到 Nexus Repository, 点击安装
    在这里插入图片描述

  2. 确认应用端口是否被占用,如果有就修改一个没有被占用的,启用端口外部访问
    在这里插入图片描述

  3. 等待nexus的安装
    在这里插入图片描述

  4. 等到状态变成绿色的已启动后,选择边上的文件夹图标,进入安装目录
    在这里插入图片描述

  5. 点击进入data目录后,找到admin.password这个文件并打开,里面是Nexus的admin初始密码

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

初始化配置

  1. 输入 http://IP:8080访问Nexus 3,然后点右上角进行登录,用户名为 admin,密码在 admin.password获得。
    在这里插入图片描述在这里插入图片描述

  2. 根据引导修改管理员密码,并启用匿名访问。
    在这里插入图片描述
    在这里插入图片描述

设置Docker镜像代理

  1. 打开设置 >> Security >> Roles >> Create Role
    在这里插入图片描述

  2. 然后按照如下填写
    在这里插入图片描述
    在这里插入图片描述

  3. 打开设置 >> Security >> Users,找到 AnonymousUser这个用户进行编辑,并添加 DockerPullAnonymous这个权限。
    在这里插入图片描述在这里插入图片描述

  4. 继续打开设置 >> Security >> Realms,添加 DockerBearerTokenRealm这个权限并保存。
    在这里插入图片描述

  5. 打开设置 >> Repositories >> Create repository我们开始创建一个Docker镜像仓库。
    在这里插入图片描述

  6. 然后选择 docker (proxy)
    在这里插入图片描述

  7. 注意下方红框标注的地方(Remote storage填写 https://registry-1.docker.io 或其他可以访问的docker镜像库)
    在这里插入图片描述

  8. 查看docker (proxy) 的URL
    在这里插入图片描述

设置反向代理并启用HTTPS

在执行docker pull操作时,为了满足Docker官方的要求,即目标镜像地址必须通过HTTPS协议进行访问,我们可以采用以下步骤来配置Nginx作为反向代理服务器,以便通过Nexus 3连接并使用自定义域名支持HTTPS访问。当然你有其他方式也是可以的。具体的 Nginx 配置如下所示:

server {listen 80;server_name hub.xxx.com; # 填写你的域名rewrite ^(.*) https://hub.xxx.com$1 permanent;}server {listen 443 ssl http2;server_name hub.xxx.com; # 填写你的域名ssl_certificate /data/ssl/hub.xxx.com.crt; # 改成你的SSL证书ssl_certificate_key /data/ssl/hub.xxx.com.key; # 改成你的SSL私钥ssl_session_timeout 1d;ssl_session_cache shared:MozSSL:10m;  # about 40000 sessionsssl_session_tickets off;# intermediate configurationssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers off;# HSTS (ngx_http_headers_module is required) (63072000 seconds)add_header Strict-Transport-Security "max-age=63072000" always;# OCSP staplingssl_stapling on;ssl_stapling_verify on;location / {client_max_body_size  64m;proxy_http_version 1.1;proxy_pass http://IP:8081/repository/docker/;  # 改成你的Nexus 3上docker (proxy) 的URLproxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 60s;proxy_send_timeout 60s;proxy_read_timeout 300s;send_timeout 60s;proxy_buffers 16 32k;proxy_buffer_size 64k;proxy_set_header Connection "";}}

测试

接下来在服务器使用命令 docker pull hub.xxx.com/helloz/onenav拉取镜像测试,可以成功拉取,说明配置成功了。
在这里插入图片描述

结论

Nexus 3 的代理仓库功能是其核心优势之一,为企业提供了一个高效、可靠且安全的依赖管理解决方案。在当前许多公开的Docker镜像加速地址不可用,以及官方Docker镜像源在国内受限的背景下,自行搭建Docker镜像代理显得尤为重要,当然还有一个大前提,你可以科学上网或者有海外资源。本文详细介绍了如何利用Nexus 3这一功能,搭建起一个适合个人或团队使用的Docker镜像代理服务。

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

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

相关文章

vivado PIN

描述 引脚是基元或层次单元上的逻辑连接点。引脚允许 要抽象掉单元格的内容,并简化逻辑以便于使用。引脚可以 是标量的,包含单个连接,或者可以定义为对多个进行分组的总线引脚 信号在一起。 相关对象 引脚连接到一个单元,并且可以…

tyflow线相关教程二

线条生长一 生长静脉二 绳索动画三 两个球线连接四 扫帚五

HCIA-Datacom H12-811 题库

LDP 邻居发现有不同的实现机制和规定,下面关于LDP 邻居发现的描述错误的是: A:LDP发现机制包括LDP基本发现机制和LDP扩展发现机制 B:LDP基本发现机制可以自动发现直连在同条链路上的LDP Peers C:LDP扩展发现机制够发现…

【Linux】线程(一)

谈论之前需要先谈论一些线程的背景知识 其中就有进程地址空间,又是这个让我们又爱又恨的东西。 注意:全篇都是在32位的情况下进行的 目录 背景知识:地址空间:内存:页表: 基于以上理解文件缓冲区与虚拟地址…

【学术小白成长之路】03三方演化博弈(基于复制动态方程)均衡点与稳定性分析

从本专栏开始,笔者正式研究演化博弈分析,其中涉及到双方演化博弈分析,三方演化博弈分析,复杂网络博弈分析等等。 先阅读了大量相关的博弈分析的文献,总结了现有的研究常用的研究流程,针对每个流程进行拆解。…

宁德等保测评公司有哪些?位于哪里?

据悉2024年中国百强城市就包含福建宁德。宁德市,福建省辖地级市,GDP快速增长,拥有众多自然风光和历史文化名镇,是一个生活幸福的城市。这里的小伙伴在问,宁德等保测评公司有哪些?位于哪里? 宁德…

想上币的项目方怎么去选择交易所

在区块链和加密货币蓬勃发展的今天,许多项目方都渴望通过交易所上线其代币,以扩大影响力、提升流动性和市场认可度。然而,选择合适的交易所并非易事,它关乎项目的未来发展和市场地位。那么,对于有上币意向的项目来说&a…

Thinkphp起名网宝宝起名网站源码

Thinkphp起名网宝宝起名网站源码 源码介绍 1.宝宝在线起名 2.八字起名,周易取名 3.一对一起名 5.支持手机wap 链接数据库地址:Application\Common\Conf 修改里面config.php数据库连接,导入sm.sql数据库文件即可 伪静态用thinkphp 后台…

接口测试的几种方法

其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。 方法一、用LoadRunner实现接口测试 大家都…

软考高级论文真题“论湖仓一体架构及其应用”

论文真题 随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP…

持PMP证书可以免考申请CSPM-2国标证书!

一提到项目管理的专业认证,大家首先想到的肯定是以PMP为核心的PMI体系认证。当然也有BSI和IPMP等其他体系认证,但都是从国外引进的专业认证,我国始终缺少符合中国特色项目管理环境下的项目管理专业认证体系。 如今,更符合中国国情…

Novartis诺华制药社招综合能力性格动机问卷入职测评笔试题库答案及包过助攻

【华东同舟求职】由资深各行业从业者建立的一站式人才服务网络平台,现阶段目标是“提升全市场各行业岗位信息的流动性和透明度”。我们接受众多行业机构的直接委托发布,并尽力通过各种方法搜寻高价值岗位信息。事实上,我们以发现不为人知的优…

经验分享,xps格式转成pdf格式

XPS 是一种电子文档格式、后台打印文件格式和页面描述语言。有时候微软默认打印机保存的是xps格式,我们如何转换为pdf格式呢,这里分享一个免费好用的网站,可以实现。 网站:https://xpstopdf.com/zh/ 截图:

HarmoneyOS星河版 安装和启动

一、下载和安装DevEco Studio 官网链接:OpenAtom OpenHarmony 1.1 找到对应的操作系统进行下载 创建安装Harmony的文件夹: 1.2 下载后进行安装 1.3 分别安装Node、Ohpm、SDK 分别安装Node、Ohpm和SDK 二、.创建一个新项目并运行 2.1 选择[OpenHarmon…

代码解读 | Hybrid Transformers for Music Source Separation[07]

一、背景 0、Hybrid Transformer 论文解读 1、代码复现|Demucs Music Source Separation_demucs架构原理-CSDN博客 2、Hybrid Transformer 各个模块对应的代码具体在工程的哪个地方 3、Hybrid Transformer 各个模块的底层到底是个啥(初步感受)&#xff1…

数据安全交换系统 与网闸有什么区别?

数据安全交换系统是指用于安全地传输、共享和交换数据的一种系统。这样的系统通常包括一系列安全性和隐私保护功能,确保数据在传输和存储过程中不会被未经授权的用户访问、泄露或篡改。 数据安全交换系统和网闸在功能和定位上有一些区别: 功能&#xff…

短剧系统搭建全攻略:功能齐全,一步到位

前言 近年来,短剧系统以其独特魅力,成为大众消遣娱乐的热门选择。简单来说,短剧系统就是用来看短剧的小程序,它汇集了丰富多彩的短剧资源,让观众随时随地享受观影乐趣。本文将为你详细解析短剧系统的搭建全攻略&#…

ROS系统中解析通过CAN协议传输的超声波传感器数据

CAN Bus接口设置:确保你的ROS系统可以通过CAN Bus接口与外部设备通信。这可能需要CAN卡或CAN适配器,以及相应的驱动程序和库。 CAN消息接收:配置ROS节点来监听特定的CAN ID,这通常是超声波传感器的标识符。 数据解析&#xff1a…

Aeron:两个代理之间的单向IPC(One-way IPC between two agents)

一、概述 本例展示了如何通过 IPC 在调度于不同线程的两个代理之间传输缓冲区。在继续学习本示例之前,最好先复习一下Simplest Full Example ,因为该示例展示的是 IPC 通信,没有增加代理的复杂性。读者还应熟悉Media Driver 流程构建如下&…

学习笔记——路由网络基础——路由优先级(preference)

1、路由优先级(preference) 路由优先级(preference)代表路由的优先程度。当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。 路由来源的优先…