首页 > 其他 > 详细

Docker仓库之分布式Harbor

时间:2020-12-26 20:24:00      阅读:109      评论:0      收藏:0      [点我收藏+]

1.Harbor的介绍

1.Docker registry和Harbor的区别

Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展(也就是二次开发,底层是Registry),从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等。
容器的核心在于镜象的概念,由于可以将应用打包成镜像,并快速的启动和停止,因此容器成为新的炙手可热的基础设施CAAS,并为敏捷和持续交付包括DevOps提供底层的支持。

总结:Harbor以Docker公司开源的registry为基础,额外提供了如下功能:
->  基于策略的镜像复制(Policy based image replication)
->  AD/LDAP集成(LDAP/AD support)
->  友好的管理UI(Graphical user portal)
->  RESTful API
->  部署简单(Easy deployment)

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

2.Harbor仓库结构

Harbor的每个组件都是以Docker容器的形式构建的,可以使用Docker Compose来进行部署。如果环境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。Harbor大概需要以下几个容器组成

ui(Harbor的核心服务)、

log(运行着rsyslog的容器,进行日志收集)、

mysql(由官方mysql镜像构成的数据库容器)、

Nginx(使用Nginx做反向代理)、

registry(官方的Docker registry)、

adminserver(Harbor的配置数据管理器)、

jobservice(Harbor的任务管理服务)、

redis(用于存储session)。

 

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(Admin Server): 这是Harbor的核心功能,主要提供以下服务:

 

         -> UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。

 

         -> webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。

 

         -> Auth服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regi?stry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。

 

         -> API: 提供Harbor RESTful API(一种统一发规范化请求接口)

 

-> Replication Job Service:提供多个 Harbor 实例之间的镜像同步功能。

 

-> Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析

 

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过上面的自有组件介绍,下面的结构还是比较清楚了。

技术分享图片

 再来仔细看下Harbor主要组件和数据流走向:

 技术分享图片

 

 

-> proxy,它是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中通过深蓝色先标识;
-> ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;
-> registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成;
-> adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置,通过灰色线标识;
-> jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标识;
-> log是日志汇总组件,通过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识。

 

Docker仓库之分布式Harbor

原文:https://www.cnblogs.com/qingbaizhinian/p/14193553.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!