前一段时间写过一篇文章:[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. 【Git】+ 新建+删除+上传+覆盖

      上传代码时邮箱格式不符合:https://blog.csdn.net/u012558695/article/details/64921922 在本地新建一个分支: git branch newBran ...

    2. Django 之 admin管理工具

      -------------------------------------------------------------------------妄尝恶果,苦果自来. admin组件使用 Django ...

    3. 双字节验证:vue输入框中英文字数长度验证

      export default { data() { let validcodeName=(rule,value,callback)=>{ //替换双字节汉字,为aa,限制输入框长度: if(va ...

    4. ExaWizards 2019 English D - Modulo Operations(DP)

      Time Limit: 2 sec / Memory Limit: 1024 MB Score : 600600 points Problem Statement Snuke has a blackb ...

    5. react的jsx语法

      在webpack.config.js中配置解析的loader { test:/\.jsx?$/, use:{ loader:"babel-loader", options:{ pr ...

    6. vagrant之常用操作

      基本操作: 查看版本: vagrant -v 初始化: vagrant init 启动虚拟机: vagrant up 关闭虚拟机: vagrant halt 重启虚拟机: vagrant reload ...

    7. Android技术框架——Dagger2

      Dagger2 是一个Android依赖注入框架.没错依赖注入,学习过spring的同学看到这词,应该是挺熟悉的.当然既然是Android的课题,我们就来聊聊Dagger2 ,android开发当前非 ...

    8. 【数学建模】数模day13-灰色系统理论I-灰色关联与GM(1,1)预测

      接下来学习灰色系统理论. 0. 什么是灰色系统? 部分信息已知而部分信息未知的系统,我们称之为灰色系统.相应的,知道全部信息的叫白色系统,完全未知的叫黑色系统. 为什么采用灰色系统理论? 在给定信息不 ...

    9. jforum(1)--环境搭建

      JForum 是采用Java开发的功能强大且稳定的论坛系统.它提供了抽象的接口.高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制.多语言支持(包括中文).高性能.可自定义的用户接口.安全. ...

    10. vscode设置python3.7调试环境(已更新)

      汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai CentOS安装Python3.7:https://www.cnblogs.com/do ...