一 . 简介

Harbor是VMware公司开源的企业级DockerRegistry项目,项目地址为https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control)AD/LDAP集成以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。

用于部署Harbor的Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成:

  1. Proxy:由Nginx 服务器构成的反向代理。
  2. Registry:由Docker官方的开源registry镜像构成的容器实例。
  3. UI:即架构中的core services, 构成此容器的代码是Harbor项目的主体。
  4. MySQL:由官方MySQL镜像构成的数据库容器。
  5. Log:运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志。

这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露proxy (即Nginx)的服务端口。

二. Harbor特性

基于角色控制

用户和仓库都是基于项目进行组织的, 而用户基于项目可以拥有不同的权限。

基于镜像的复制策略

镜像可以在多个Harbor实例之间进行复制。

支持LDAP

Harbor的用户授权可以使用已经存在LDAP用户。

镜像删除 & 垃圾回收

Image可以被删除并且回收Image占用的空间。

用户UI

用户可以轻松的浏览、搜索镜像仓库以及对项目进行管理。

镜像删除 & 垃圾回收

绝大部分的用户操作API, 方便用户对系统进行扩展。

轻松的部署功能

Harbor提供了online、offline安装,除此之外还提供了virtualappliance安装。

三. Harbor认证过程

1、docker daemon 从 docker registry拉取镜像。

2、如果docker registry需要进行授权时,registry将会返回401 Unauthorized响应,同时在响应中包含了docker client如何进行认证的信息。

3、docker client根据registry返回的信息,向auth server发送请求获取认证token。

4、auth server则根据自己的业务实现去验证提交的用户信息是否存符合业务要求。

5、用户数据仓库返回用户的相关信息。

6、auth server将会根据查询的用户信息,生成token令牌,以及当前用户所具有的相关权限信息 。上述就是完整的授权过程.当用户完成上述过程以后便可以执行相关的pull push操作。认证信息会每次都带在请求头中。

四. Harbor整体架构

五.Harbor认证流程

A、首先,请求被代理容器监听拦截,并跳转到指定的认证服务器。

B、 如果认证服务器配置了权限认证,则会返回401。通知docker client在特定的请求中需要带上一个合法的token。而认证的逻辑地址则指向架构图中的core services。

C、 当docker client接受到错误code。client就会发送认证请求(带有用户名和密码)到core services进行basic auth认证。

D、 当C的请求发送给ngnix以后,ngnix会根据配置的认证地址将带有用户名和密码的请求发送到core serivces。

E、 core services获取用户名和密码以后对用户信息进行认证(自己的数据库或者介入LDAP都可以)。成功以后,返回认证成功的信息。

参考:https://blog.csdn.net/jiangshouzhuang/article/details/53267094

(十九)VMware Harbor 详细介绍的更多相关文章

  1. (二十)VMware Harbor - API

    可以用swagger在线解析 http://editor.swagger.io/将swagger.yaml中的内容拷贝到里面即可. 官方文档说明链接如下:https://github.com/vmwa ...

  2. (十)VMware Harbor 日志管理

    VMware Harbor 日志管理 1. 项目日志 每个项目下都有一个"日志"页签. 单击"日志"可以列出所有日志.可以按用户名或"高级搜索&quo ...

  3. geotrellis使用(十九)spray-json框架介绍

    Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 spray-json简介 spray-json使用 ...

  4. Python爬虫(十九)_动态HTML介绍

    JavaScript JavaScript是网络上最常用也是支持者对多的客户端脚本语言.它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏. 我们可以在网页源 ...

  5. 第十九章 DHCP原理介绍

    一.为什么使用DHCP 1.手动为局域网中大量主机配置IP地址.掩码.网关等参数的工作繁琐,容易出错 2.DHCP可以自动为局域网中主机完成TCP/IP协议配置 3.DHCP自动配置避免了IP地址冲突 ...

  6. ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)

    原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...

  7. (九)VMware Harbor 项目管理-上传/下载镜像

    VMware Harbor项目管理 Harbor中的项目包含应用程序的所有存储库. Harbor有两类项目: 公共:所有用户都拥有公共项目的读取权限,您可以方便地以这种方式与其他人共享一些存储库. 私 ...

  8. ThinkPHP页面跳转、Ajax技巧详细介绍(十八)

    原文:ThinkPHP页面跳转.Ajax技巧详细介绍(十八) ThinkPHP页面跳转.Ajax技巧详细介绍 一.页面跳转 $this->success('查询成功',U('User/test' ...

  9. thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)

    原文:thinkPHP 空模块和空操作.前置操作和后置操作 详细介绍(十四) 本章节:介绍 TP 空模块和空操作.前置操作和后置操作 详细介绍 一.空模块和空操作 1.空操作 function _em ...

随机推荐

  1. AttributeError: 'function' object has no attribute 'as_view'

    我的描述:当我启用jwt_required来进行token验证的时候,我提示错误; 解决方案: 修改前代码: 修改后代码: 多看书.多多了解.多看看世界...

  2. Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug

    集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...

  3. SpringBoot整合开发

    1.SpringBoot分模块 分模块就是将一个项目分成多个模块,即maven项目. 1)首先创建一个springboot的项目: 第一步:选择springboot的项目 第二步:填写项目的相关信息, ...

  4. Python爬虫系统化学习(2)

    Python爬虫系统学习(2) 动态网页爬取 当网页使用Javascript时候,很多内容不会出现在HTML源代码中,所以爬取静态页面的技术可能无法使用.因此我们需要用动态网页抓取的两种技术:通过浏览 ...

  5. Hive 填坑指南

    Hive 填坑指南 目录 Hive 填坑指南 数据表备份 数据表备份 方法1:create table 表名_new as select * from 原表 create table 表名_new a ...

  6. 栈的数组模拟(非STL)

    #include<bits/stdc++.h> using namespace std; struct zhan{ int s[10000]; int top=0; void zhanpo ...

  7. android上实现0.5px线条

    转: android上实现0.5px线条 由于安卓手机无法识别border: 0.5px,因此我们要用0.5px的话必须要借助css3中的-webkit-transform:scale缩放来实现. 原 ...

  8. POJ-2752(KMP算法+前缀数组的应用)

    Seek the Name, Seek the Fame POJ-2752 本题使用的算法还是KMP 最主要的片段就是前缀数组pi的理解,这里要求解的纸盒pi[n-1]有关,但是还是需要使用一个循环来 ...

  9. HDOJ-6651(数学推导)

    Final Exam HDOJ-6651 这里主要考察我们的思维能力,要想自己至少可以通过k道题目,那么可以从老师的角度出发:怎么才能尽可能让你每一道题目都不通过,但是分数却是固定的. 假设我们每道题 ...

  10. 面向青铜的java自学路线

    有经验的人都知道,java还是需要一些路线的,因为java有些知识前后关联挺大的,先学后面和先学前面难度是不一样的. 如果你是新手,只要你知道路线这个东西,起码要比别人强,至少知道可以怎么走(更重要的 ...