前一段时间写过一篇文章:[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. Hive中知识点

      hive的最新学习资料:http://www.cnblogs.com/qingyunzong/p/8707885.html hive的参数设置大全:https://cwiki.apache.org/c ...

    2. Linux Hung Task分析

      关键词:khungtaskd.TASK_UNINTERRUPTIBLE.nvcsw.nivcsw.last_switch_count等等. 经常会遇到内核打印“INFO: task xxx:xxx b ...

    3. Golang 入门系列(二)学习Go语言需要注意的坑

      上一章节我们已经了解了 Go 环境的配置,不了解的,请查看前面的文章 https://www.cnblogs.com/zhangweizhong/p/9459945.html,本章节我们将学习 Go ...

    4. iOS开发基础-九宫格坐标(5)

      继续在iOS开发基础-九宫格坐标(4)的基础上进行优化. 一.改进思路 1)iOS开发基础-九宫格坐标(4)中 viewDidLoad 方法中的第21.22行对控件属性的设置能否拿到视图类 WJQAp ...

    5. SpringCloud(6)分布式配置中心Spring Cloud Config

      1.Spring Cloud Config 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组 ...

    6. 在Linux上安装ant环境

      原文链接:http://www.cnblogs.com/sell/archive/2013/07/24/3210198.html 1.从http://ant.apache.org 上下载tar.gz版 ...

    7. vagrant之常用操作

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

    8. [模板] 网络流相关/最大流ISAP/费用流zkw

      最大流/ISAP 话说ISAP是真快...(大多数情况)吊打dinic,而且还好写... 大概思路就是: 在dinic的基础上, 动态修改层数, 如果终点层数 \(>\) 点数, break. ...

    9. 【论文阅读】Sequence to Sequence Learning with Neural Network

      Sequence to Sequence Learning with NN <基于神经网络的序列到序列学习>原文google scholar下载. @author: Ilya Sutske ...

    10. DRF初识与序列化

      一.Django的序列化方法 1.为什么要用序列化组件 做前后端分离的项目,我们前后端数据交互一般都选择JSON,JSON是一个轻量级的数据交互格式.那么我们给前端数据的时候都要转成json格式,那就 ...