前一段时间写过一篇文章:[Kubernetes]CentOS7下搭建Harbor仓库,只是知道了如何搭建,但是对于背后的整体架构还不是太清楚,这篇文章就来讲讲.

默认情况下,Harbor运行起来后有如下容器:

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2ac87673c5b vmware/nginx-photon:1.11.13 "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp nginx
0d0a8e9cf7f4 vmware/harbor-jobservice:v1.3.0 "/harbor/start.sh" 2 hours ago Up 2 hours (healthy) harbor-jobservice
bb3b83138017 vmware/harbor-ui:v1.3.0 "/harbor/start.sh" 2 hours ago Up 2 hours (healthy) harbor-ui
16f8eec3d78e vmware/harbor-adminserver:v1.3.0 "/harbor/start.sh" 2 hours ago Up 2 hours (healthy) harbor-adminserver
5063ea0d99d6 vmware/registry:2.6.2-photon "/entrypoint.sh serv…" 2 hours ago Up 2 hours (healthy) 5000/tcp registry
56f5a1077f3a vmware/harbor-db:v1.3.0 "/usr/local/bin/dock…" 2 hours ago Up 2 hours (healthy) 3306/tcp harbor-db
23bf25652305 vmware/harbor-log:v1.3.0 "/bin/sh -c /usr/loc…" 2 hours ago Up 2 hours (healthy) 127.0.0.1:1514->10514/tcp harbor-log

分别为nginx,harbor-jobservice,harbor-ui,harbor-adminserver,registry,harbor-db,harbor-log,由上我们可以得出下面的架构图:

各模块详解

Harbor是通过docker compose来部署的,这也是为什么在装Harbor之前,需要安装docker-compose.接下来讲一下上图中设计到的各个模块的详细部分.

  • Proxy:对应启动组件nginx,是一个nginx反向代理.Harbor的registry,UI,token services等组件,都处在一个反向代理后边,该代理负责将来自浏览器,docker clients的请求转发到后端服务上
  • Registry:对应启动组件registry.负责存储Docker镜像文件,以及处理Docker的push,pull等请求.Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull,push请求转发到token服务来获取有效的token.
  • Core services:Harbor的核心功能,主要包括3个服务:UI,Job services和Log collector.
    • UI:对应启动组件harbor-ui.以图像用户界面的方式,辅助用户管理镜像,我个人觉得这样使得使用Harbor时,更加友好.
    • Job services:对应启动组件harbor-jobservice,主要用于镜像复制,和registry通信,本地镜像可以push到Harbor镜像仓库中,同样也可以从Harbor镜像仓库中pull到本地,同时记录job_log.
    • Log collector:对应启动组件harbor-log.负责收集其他模块的日志到一个地方
  • Database:对应启动组件harbor-db.负责存储project,user,role,replication等的metadata数据.
  • adminserver:对应启动组件harbor-adminserver.是系统的配置管理中心,当ui和jobserver启动时,需要加载adminserver的配置
  • 大概就介绍到这里了,感谢您的阅读~

    [Harbor]Harbor简要介绍的更多相关文章

    1. 简要介绍BASE64、MD5、SHA、HMAC几种方法。

      加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     ...

    2. [转]Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划

      转自:Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划 前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了Surfa ...

    3. [转] Android资源管理框架(Asset Manager)简要介绍和学习计划

      转自:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分内容组成:代码和资源.资源主要就是指那些与U ...

    4. Activity启动过程简要介绍

      无论是通过点击应用程序图标来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都要借助于应用程序框架层的ActivityManagerSe ...

    5. Android应用程序的Activity启动过程简要介绍和学习计划

      文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activ ...

    6. Dalvik虚拟机简要介绍和学习计划

      文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是 ...

    7. Android资源管理框架(Asset Manager)简要介绍和学习计划

      文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...

    8. Android应用程序组件Content Provider简要介绍和学习计划

      文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6946067 在Android系统中,Conte ...

    9. Android窗口管理服务WindowManagerService的简要介绍和学习计划

      在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架.事实上,如果我们从整体的角度来看,Android应用程序窗口的 实现要更复杂,因为它们的类型和作用不同,且会相互影响. ...

    10. Android应用程序窗口(Activity)实现框架简要介绍和学习计划

      文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8170307 前面我们学习了SurfaceFli ...

    随机推荐

    1. (十五)The Search API

      Now let’s start with some simple searches. There are two basic ways to run searches: one is by sendi ...

    2. Html 改变原有标签属性

      内容简要: 当标签内内容 达到某以条件的时候改变当前标签属性 例如原标签为<tr> 当tr内的值符合某一条件时把<tr>变成<a>标签 例:当订单状体编程已支付的时 ...

    3. Linux内存管理 (2)页表的映射过程

      专题:Linux内存管理专题 关键词:swapper_pd_dir.ARM PGD/PTE.Linux PGD/PTE.pgd_offset_k. Linux下的页表映射分为两种,一是Linux自身的 ...

    4. springboot整合mybatis的多数据源解决办法

      最近项目有一个非解决不可的问题,我们的项目中的用户表是用的自己库的数据,但是这些数据都是从一个已有库中迁过来的,所以用户信息都是在那个项目里面维护,自然而然我们项目不提供用户注册功能,这就有个问题,如 ...

    5. [Oracle]Sqlplus 中使用 new_value

      通过再sqlplus 中使用 new_value,可以把从表中查询出来的值,放置到 变量中.然后使用变量时,类似与宏定义一样,就可以像使用表中字段一样方便. 这使得sqlplus 的脚本具备和pl/s ...

    6. DIY 空气质量检测表

      DIY 空气质量检测表 前几天逛淘宝看到有空气颗粒物浓度测量的传感器,直接是 3.3V TTL 电压串口输出的,也不贵,也就 100 多一点.觉得挺好就买了个,这两天自己捣鼓了个小程序,搞了个软件界面 ...

    7. 分享Winform datagridview 动态生成中文HeaderText

      缘起 很久以前给datagridview绑定列的时候都是手动的,记得以前用Display自定义属性来动态给datagridview绑定列.后来发现不行,于是还在博问发了问题: 后来热心网友帮我回答了这 ...

    8. 5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用

      本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频 ...

    9. LeetCode-876 链表的中间结点

      对于链表的中某个位置结点的定位一般都会用到两个链表结点指针,例如链表倒数第K个结点问题使用的是先后指针,该题中用到的快慢指针. 本题的具体解法就是快指针走两步.慢指针走一步知道遍历完结点,重点是分清题 ...

    10. Linux -- nginx

      一. 网络服务 web服务器和web框架的关系 web服务器(nginx):接收HTTP请求(例如www.baidu.com)并返回数据 web框架(django,flask):开发web应用程序,处 ...