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

news2024/11/25 3:00:42

什么是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 sessions

    ssl_session_tickets off;

    # intermediate configuration

    ssl_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 stapling

    ssl_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) 的URL

          proxy_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.coloradmin.cn/o/1830708.html

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

相关文章

【Android】安Android Studio环境搭建注意点

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

切割游戏介绍

简介 上大学时,在学校实验室里玩过一个貌似使用VC写的小游戏,一个小球在界面上四处游荡,玩家使用鼠标切割背景,将背景切割剩余到一定的百分比后,就胜利了,后边的背景图会全部展示出来。 使用qt的qml技术&a…

超级底层:10WQPS/PB级海量存储HBase/RocksDB,底层LSM结构是什么?

一次穿透:10WQPS/PB级海量存储HBase/RocksDB的底层LSM结构 LSM tree 是很多数据库内部的核心数据结构,包括BigTable,ClickHouse、Cassandra, Scylla, RocksDB,HBase。 ClickHouse基于Log-Structured Merge-Tree 结构&#xff08…

【Mac】CrossOver 24 for Mac(windows 虚拟机)软件介绍及与PD的比较

软件介绍 Crossover for Mac是一款由CodeWeavers开发的软件,它允许用户在Mac操作系统上运行Windows程序,而无需安装Windows操作系统。 这个工具使用了Wine项目的技术,它通过创建一个虚拟的Windows环境来实现在Mac上运行Windows程序。用户可…

CoppeliaSim机器人模拟器与Matlab Simulink环境

一、CoppeliaSim机器人模拟器 CoppeliaSim(原名V-REP,Virtual Robot Experimentation Platform)是一款基于物理引擎的动力学机器人模拟器。它提供了一个集成的开发环境,支持传感器、机械、机器人、环境的系统建模与仿真。Coppeli…

404错误页面源码,简单实用的html错误页面模板

一款404错误页面源码,简单实用的html错误页面模板,简单大气的页面布局,可以使用到不同的网站中,相信大家一定会喜欢的,快来下载使用吧! 源码下载:https://download.csdn.net/download/m0_66047…

安全漏洞周报(2024.06.10-2024.06.17)

漏洞速览 ■ SolarWinds Serv-U 目录遍历漏洞(CVE-2024-28995) 漏洞详情 1.SolarWinds Serv-U 目录遍历漏洞(CVE-2024-28995) 影响组件: SolarWinds 是一家提供广泛的 IT 管理和网络管理软件解决方案的公司。SolarWinds 的产品被设计用于监控和管理网络设备、服…

串扰(一)

一、说明 串扰应该算比较常见的信号完整性问题了,一般是指由于走线较近,传输信号时在临线上产生耦合噪声的现象。串扰的原因是由于电场和磁场的耦合,我们经常用耦合电容和耦合电感模型进行问题分析。 本文是基于被攻击线阻抗匹配的情形下计…

SpringBoot+Vue小区物业管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码2.查询小区信息代码3.保存缴费信息代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootVue框架开发的小区物业管理系统。首先&#xf…

安全生产管理系统——特殊作业管控

特殊作业环节面临事故多发、频发、死亡率高,如何做到有效管理是一大考验,进行系统全面的规整很有必要。安全生产管理系统中特殊作业管理通过整合资源和采用信息化技术对动火、受限空间、盲板抽堵、高处、吊装、临时用电、动土、断路等特殊作业全过程管理…

Hi3861 OpenHarmony嵌入式应用入门--基于HI-12F开发板烧写程序

首先需要一个开发板,我已经在嘉立创上进行了开源,基于安信可hi-12f模块的开发板,集成了两个按键,一个三色灯,一个滑动变阻器,可外接一个0.96寸液晶。 【HI-12F】基于安信可hi-12f模块的开发板 - 嘉立创EDA…

数据价值管理-数据使用标准

前情提要:数据价值管理是指通过一系列管理策略和技术手段,帮助企业把庞大的、无序的、低价值的数据资源转变为高价值密度的数据资产的过程,即数据治理和价值变现。第一讲介绍了业务架构设计的基本逻辑和思路。 前面我们讲完了数据资产建设标准…

pnpm run build报错throw new Error(‘Callback was already called.‘);

\node_modules\.pnpm\vuecli-service4.5.19_l3k57h4lccq2gytfrrziribsfe\node_modules\vue\cli-service\node_modules\neo-async\async.js:16throw new Error(Callback was already called.);解决:清除所有node_modules 我这里使用的命令pnpm run clean,可以根据自己…

东明第19届西瓜节背后的秘密

中共东明县委书记孙迁国致辞 6月16日,随着华灯初上,东明县小井镇沉浸在一片欢乐祥和的氛围中。备受瞩目的第十九届西瓜节在这里盛大开幕,数万观众汇聚一堂,共同见证了东明县以西瓜为纽带,连接传统与现代、文化与经济的…

安卓实现输入快递单号生成二维码,摄像头扫描快递单号生成的二维码,可以得到快递信息

背景: 1、实现二维码的生成和识别2、实现andriod(或虚拟机)部署,调用摄像头3、实现网络管理,包括数据库【取消】2、3可以组队实现,1必须单人实现 过程: 安卓APP主界面 输入快递单号信息&#…

成都爱尔林江院长建议近视防控从小做起,具体怎么做

预防近视应从小做起,知识储备多多益善。孩子如何做到近视防控? 成都爱尔眼科医院小儿眼科专家林江院长建议家长和孩子同时树立科学观念,让孩子拥有一个丰富多彩假期的同时强身健体也保护好眼睛。 不宅家、多户外 确保每天至少2个小时的户外…

可穿戴设备:苹果“吃老底”、华为“忙复苏”、小米“再扩容”

配图来自Canva可画 随着产品功能的创新,可穿戴设备不再被简单地视为手机的延伸,而是被当成一种独立的、具有独特功能和优势的产品,受到了越来越多人的青睐。 一方面,技术的进步使得可穿戴设备在功能、性能和使用体验上得到显著提…

打造工业操作系统开源开放体系

我国制造业具有细分行业、领域众多,产品丰富,制造模式多样等特点,围绕以工业操作系统为核心的工业软件赋能体系建设,离不开平台运营商、工业软件开发商、系统服务商、科研机构、工业企业等多方联合参与。聚众同行、聚力创新&#…

跳舞电动机器人单片机方案

这款机器人形状智能电子玩具是一款集娱乐、教育和互动于一身的高科技产品。它的主要功能包括: 1、智能对话:机器人可以进行简单的对话,回答用户的问题,提供有趣的互动体验。 2、前进、后退、左转、右转、滑行:机器人…

nuxt3+vue3+vite+TS实现国际化

前言 博主最近打算用Nuxt3重构了自己SSR博客,打算添加国际化功能,众所周知,实现国际化已是一个很常见的功能。用户可以根据自己的喜好,设置页面的自己合适的语言,从而实现国际化浏览。这样用户体验度会大大提升。博客…