(十九)VMware Harbor 详细介绍

一 . 简介

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

原文地址:https://www.cnblogs.com/shix0909/p/11116817.html