【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三方演化博弈(基于复制动态方程)均衡点与稳定性分析

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

代码随想录算法训练营第38天|● 理论基础 ● 509. 斐波那契数● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

动态规划理论基础 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心&…

VB.net与C# 调用InitializeComponent的区别

VB.NET与C# 调用InitializeComponent的区别 在VB.NET和C#中,InitializeComponent 方法的调用方式有所不同。 C#: 在C#中,InitializeComponent 方法通常是在构造函数中显式调用的。它用于初始化窗体和控件的属性。代码示例如下: public pa…

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

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

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

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

uniapp开发微信小程序预览文件+图片+嵌套网页

1、预览文件 <view click"preview(文件地址)">点击预览 </view>// 预览 const preview (middle) > {uni.downloadFile({url: middle,//middle为调用接口返回的文件地址success: (data) > {uni.saveFile({tempFilePath: data.tempFilePath, //临时…

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

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

ubuntu 深度学习服务器搭建

apt-get install openssh-server -y systemctl enable ssh apt-get install net-tools -y apt-get install vim -y VNC 安装&#xff1a;https://blog.csdn.net/qq_45516773/article/details/132072500 显卡驱动下载&#xff1a;Official Drivers | NVIDIA 安装前准备&#x…

接口测试的几种方法

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

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

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

【Android面试八股文】你能说一说反射为什么这么慢?

文章目录 一、Java 反射效率低主要原因二、优化反射速度1. 缓存反射对象2. 降低反射调用频率3. 使用 `MethodHandle` 和 `MethodHandles.Lookup`4. 使用字节码生成工具5. 混合使用反射和直接调用6. 提高 JVM 优化水平一、Java 反射效率低主要原因 虽然反射提供了灵活性和动态性…

持续总结中!2024年面试必问 20 道设计模式面试题(二)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道设计模式面试题&#xff08;一&#xff09;-CSDN博客 三、请描述单例模式&#xff08;Singleton Pattern&#xff09;及其使用场景。 单例模式是一种创建型设计模式&#xff0c;用于确保一个类只有一个实例…

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

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

mysql面试题 Day2

1 长文本如何存储&#xff1f; 可以使用Text存储 TINYTEXT(255长度) TEXT(65535) MEDIUMTEXT&#xff08;int最大值16M&#xff09; LONGTEXT(long最大值4G) 2 大段文本存储如何设计表结构&#xff1f; 分表存储 分表后多段存储 3 大段文本查找时如何建立索引&#xff1…

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

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

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

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