08 - 镜像管理之:镜像仓库harbor介绍

本文参考:原文1


1 Harbor仓库介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry 也是非常必要的。

之前介绍了Docker私有仓库Registry,这里介绍另一款企业级Docker镜像仓库Harbor的部署和使用,在Kubernetes集群中,推荐使用Harbor仓库环境。

Harbor是由VMware公司开源的企业级的Docker Registry管理项目(开源项目地址:https://github.com/vmware/harbor),Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:
-> 基于角色的访问控制(Role Based Access Control)
-> 基于策略的镜像复制(Policy based image replication)
-> 镜像的漏洞扫描(Vulnerability Scanning)
-> AD/LDAP集成(LDAP/AD support)
-> 镜像的删除和空间清理(Image deletion & garbage collection)
-> 友好的管理UI(Graphical user portal)
-> 审计日志(Audit logging)
-> RESTful API
-> 部署简单(Easy deployment)


Harbor的所有组件都在Docker中部署,所以Harbor可使用Docker Compose快速部署。需要特别注意:由于Harbor是基于Docker Registry V2版本,所以docker必须大于等于1.10.0版本,docker-compose必须要大于1.6.0版本!


2 Harbor仓库结构


Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,整体架构如下:

在这里插入图片描述


harbor仓库由9个容器组成,这9个容器由docker-compose工具来统一管理:

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


在harbor的组件中,有部分是harbor自有的组件,一部分是harbor所依赖的外部组件,具体如下:
在这里插入图片描述

Harbor依赖的【外部组件】:

  • Nginx(即Proxy代理层):Nginx前端代理,主要用于分发前端页面ui访问和镜像上传和下载流量;Harbor的registry、UI、token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
  • Registry v2:镜像仓库,负责存储镜像文件; Docker官方镜像仓库,负责储存Docker镜像,并处理docker push/pull命令。由于我们要对用户进行访问控制,即不同用户对 Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token,Registry会通过公钥对token进行解密验证。
  • Database(MySQL或Postgresql):为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。


    Harbor【自有组件】:
  • Core services:这是Harbor的核心功能,主要提供以下服务:
  • UI(harbor-portal):提供图形化界面,帮助用户管理registry上的镜像(image),并对用户进行授权。
  • webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
  • Auth服务:负责根据用户权限给每个docker push/pull 命令签发token,Docker 客户端向 Registry 服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
  • API:提供Harbor RESTful API
  • Replication Job Service:提供多个 Harbor 实例之间的镜像同步功能。
  • Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

这里有两个对Harbor的理解误区:

  • 误区一:Harbor是负责存储容器镜像的( Harbor是镜像仓库,那么它就应当是存储镜像的)其实关于镜像的存储,Harbor使用的是官方的docker registry服务去完成,至于registry是用 本地存储 或者 s3 都是可以的,Harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。

  • 误区二:Harbor镜像复制是存储直接复制(镜像的复制,很多人以为应该是镜像分层文件的直接拷贝)其实Harbor镜像复制采用了一个更加通用、高屋建瓴的做法,通过 docker registry 的API去拷贝,这不是省事,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。


3 Harbor仓库的部署

这里不建议使用kubernetes来部署,原因是:镜像仓库非常重要,尽量保证部署和维护的简洁性,因此,这里直接使用compose的方式进行部署。官方提供3种部署Harbor的方式:
1)在线安装:从Docker Hub下载Harbor的镜像来安装,由于Docker Hub比较慢, 建议Docker配置好加速器。
2)离线安装:这种方式应对与部署主机没联网的情况使用。需要提前下载离线安装包:harbor-offline-installer-.tgz 到本地。
3)OVA安装:这个主要用vCentor环境是使用。

下面,演示如何离线安装harbor。


3.1 硬件要求

Harbor仓库部署的官方要求的最小系统配置:

  • 2个cpu
  • 4g内存
  • 40g硬盘,因为是存储镜像的所以推荐硬盘大点。

如果是企业环境,建议最低4c 8g 200g存储,具体根据业务情况来决定。



部署记录见这里。

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

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

相关文章

CSS设置文本

目录 概述: text-aling: text-decoration: text-transform: text-indent: line-height: letter-spacing: word-spacing: text-shadow: vertical-align: white-space: direction: 概述: 在CSS中我们可以设置文本的属性,就像Word文…

解压文本(dfs+判环)

思路: 不难发现文件可以解压,当且仅当 1 号点出发能到达的节点集合,是一个有向无环图(DAG)。 无法解压的情况,就是图里存在环。于是我们可以 dfs 解压到这个文本时,给其标记 vis[i] true&…

YOLOv8 推理脚本--置信度保留多位浮点数 特征图可视化

效果 特征图可视化: 4位浮点数: 原始2位浮点数4位浮点数推理 --detect.py 说明 在进行改动前,请大家先阅读下 基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95 ,确保会用我给的推理脚本。 YOLO( ):…

关于01背包和完全背包问题的细节思考

01背包问题 #include<iostream> #include<stdlib.h> #include<vector> #include<cmath> int main() {int M0; //材料数int N0; //背包容量std::cin>>M>>N;std::vector<int>space(M,0);for(int i0;i<M;i) std::cin>>…

SAP FI F-32/F-44字段增强 案例 新增销售订单上面的客户参考VBKD-BSTKD

业务想在F-32 的清账界面 加上VBKD-BSTKD 参考 https://www.cnblogs.com/keyuming/p/15553615.html 但是不完全成功&#xff0c;走了不少弯路 1、新增字段 在RFOPS 和 RFOPS_S上新增字段建议还是老老实实用 Z(字段) 原想着扩展字段也用BSTKD&#xff0c;出来却是比较奇…

子域名是什么?有什么作用?

在互联网世界中&#xff0c;域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名&#xff0c;其中有些大型公司的网站还不止一个域名&#xff0c;除了主域名外还拥有子域名。有些人感到非常困惑&#xff0c;不知道子域名是什么。其实子域名也就是平时所说的二级域…

C++模板初阶(个人笔记)

模板初阶 1.泛型编程2.函数模板2.1函数模板的实例化2.2模板参数的匹配规则 3.类模板3.1类模板的实例化 1.泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 //函数重载 //交换函数的逻辑是一致的&#xff0c…

Python处理PDF:在PDF文档中插入页眉和页脚

在处理篇幅较长、结构复杂的PDF文档时&#xff0c;页眉和页脚的设计与插入就显得尤为重要。它们不仅扮演着美化文档、提升专业度的角色&#xff0c;更承担了导航指引、信息标注的重要功能。 页眉通常用于展示文档的标题或章节名称&#xff0c;有助于读者在翻阅过程中迅速定位所…

校园圈子小程序,大学校园圈子,三段交付,源码交付,支持二开

介绍 在当今的数字化时代&#xff0c;校园社交媒体和在线论坛成为了学生交流思想、讨论问题以及分享信息的常用平台。特别是微信小程序&#xff0c;因其便捷性、用户基数庞大等特点&#xff0c;已逐渐成为构建校园社区不可或缺的一部分。以下是基于现有资料的校园小程序帖子发…

N 皇后 - 蓝桥杯?-Lua 中文代码解题第6题

n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#xff1a;n 4 输出&#xff1a;2 解释&#xff1a;如上图所示&…

VBA 制作二维码

假设从B1单元格取值&#xff0c;在A1单元格中生成二维码&#xff0c; 那么&#xff0c;代码如下↓ Sub genBarCode()清除已有二维码Call clearBarCodeWith ActiveSheet.OLEObjects.Add(ClassType:"BARCODE.BarCodeCtrl.1").Object.Style 11 二维码样式.Object.V…

模拟退火遗传算法GASA-附MATLAB代码

模拟退火遗传算法&#xff08;Simulated Annealing Genetic Algorithm&#xff0c;SAGA&#xff09;结合了模拟退火算法&#xff08;Simulated Annealing&#xff0c;SA&#xff09;和遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;的优点&#xff0c;用于解…

支持向量机(SVM)白话之个人理解(学习记录)

本文仅有文字理解部分&#xff0c;没有相应的数学公式推导过程&#xff0c;便于新手理解。 一、什么是支持向量机 首先我们看下面这张图&#xff0c;在图中圆形和三角形分别代表不同的数据类型&#xff0c;如何画出一条直线使两者能够显著地区分开来呢&#xff1f; 答案可以多…

分类预测 | Matlab实现ABC-LSSVM人工蜂群算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现ABC-LSSVM人工蜂群算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现ABC-LSSVM人工蜂群算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现ABC-LSSVM人工蜂群算法优化最小二乘支…

Web服务器架构设计(学习笔记)

软件架构风格 质量属性与架构评估 Web架构综合考察 什么叫做架构风格&#xff1f;又有哪些架构风格&#xff1f;不同的架构风格的优劣如何? 有哪些层次的负载均衡实现&#xff1f;优劣如何&#xff1f; 有哪些层面的集群切片实现&#xff1f; 什么叫做小前端&#xff0c…

大屏可视化展示平台解决方案(word原件获取)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.2.数据查询过程设…

Leetcode算法训练日记 | day23

一、修剪二叉搜索树 1.题目 Leetcode&#xff1a;第 669 题 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff…

LeetCode 142.环形链表II(数学公式推导)

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

腾讯云4核8G服务器多少钱?4核8G能干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

如何在Flutter应用中配置ipa Guard进行混淆

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…