产品简介
产品概述
产品简介
托管的容器镜像仓库是用户部署容器化应用的必要功能。一般来说,用户会在本地环境中安装容器Registry工具,但这种方式用户需要自己维护Registry工具的生命周期、维护各种容器镜像,还要管理相应的后端存储以及网络访问服务,工作复杂繁琐,且耗费时间。线上的托管镜像仓库,可以帮助用户简化管理工作;用户无需部署、配置Registry,即可快速在线创建镜像仓库,并上传镜像,或者从代码源直接构建镜像,用户以按需付费的方式使用存储和网络资源;在部署应用的时候,无论是使用云端资源还是使用本地资源,只要网络可以联通,用户都可以从线上镜像仓库中拉取容器镜像供应用使用。
容器镜像服务CRS(Container Registry Service)为用户提供了存储docker镜像文件的仓库,用户可以在线管理自己的镜像仓库,并在线构建、存储、分享、推送容器镜像。容器镜像服务产品支持的范围包括:镜像仓库管理、镜像管理、官方镜像(收藏/使用)等
产品特性
- 提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
- 支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
- 基于角色的访问控制
用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
- 镜像复制
镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
- 镜像删除 & 垃圾回收
Image可以被删除并且回收Image占用的空间。
- AD/LDAP 支持
Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
- 审计管理
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
- 国际化
已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
- RESTful API
RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
技术架构
容器镜像服务底层基于Harbor构建,Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等。
- Harbor的每个组件都是以Docker 容器的形式构建的,我们使用Docker Compose来对它进行部署。
- Harbor在架构上主要由五个组件构成:
- Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
- Registry: 负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。
- Core services: 这是Harbor的核心功能,主要提供以下服务:
- UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。
- webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
- token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
- Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
- Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
- Harbor整体架构图如下所示:
- 下图展示harbor主要的功能组件和信息流向。
- 主要组件包括proxy,他是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中通过深蓝色标识。
- ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库。
- registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成。
- adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置,通过灰色线标识。
- jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标识。
- log是日志汇总组件,通过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识。
产品架构
镜像仓库提供镜像存储管理功能,存储和管理docker基础镜像及源代码编译构建、程序包构建生成的镜像,简化镜像仓库的创建、维护和部署容器应用的规范流程,并提供内部和外部网络访问能力,提供安全可靠的镜像资源托管空间,方便用户在任何平台上使用安全可靠的镜像快速部署容器应用,同时支持对接代码托管服务和CI/CD流水线服务,能够实现容器镜像的自动化构建与更新,同时镜像资源包括私有镜像和官方镜像,支持镜像上传、下载、删除功能。同时还提供企业级扩展功能,包括提供镜像仓库管理端页面;提供基于项目多仓库镜像同步复制和跨区域镜像仓库同步管理;提供基于项目的用户角色权限控制,同时添加了镜像扫描功能帮助排除镜像漏洞。产品架构如下:
项目管理
根据对镜像的管理需求创建镜像项目,项目将作为创建的私人镜像地址的前缀。创建的项目可用来对应一个公司、组织或个人用户,也可以对应一个大的项目,项目可以有效的管理镜像仓库,同时每个项目可根据用户角色进行授权和权限功能控制 包括管理权限、编辑权限、读取权限,还可查询项目的用户信息,包括:用户名称,用户管理项目的权限信息。 -企业身份集成
我的镜像
管理个人用户私有 Docker 镜像仓库,提供镜像上传、下载和设置tag标签等功能。还可根据用户设置相应的配额权限,用户可在镜像配额限制内管理和维护镜像资源;同时提供镜像详细信息查询功能,详细信息中可以查看:镜像名称、已用存储、版本数量、下载次数、创建时间和更新时间,还可以查看镜像版本中对应的版本详细信息,包括:标识、大小、镜像版本和更新时间以及镜像元数据信息。
镜像中心
镜像中心可以查看docker-hub的镜像资源,为用户提供了公共容器镜像的检索和收藏功能,同时提供镜像的上传、下载等功能。镜像资源包括了docker官方镜像以及第三方镜像资源,用户可以在部署容器实例时方便地使用已收藏镜像。
功能说明
镜像仓库提供镜像存储管理功能,存储和管理docker基础镜像及源代码编译构建、程序包构建生成的镜像,简化镜像仓库的创建、维护和部署容器应用的规范流程,并提供内部和外部网络访问能力,提供安全可靠的镜像资源托管空间,方便用户在任何平台上使用安全可靠的镜像快速部署容器应用,同时支持对接代码托管服务和CI/CD流水线服务,能够实现容器镜像的自动化构建与更新。镜像资源包括私有镜像和官方镜像,支持镜像上传、下载、删除功能,还支持企业级扩展功能,包括提供镜像仓库管理端页面;提供基于项目多仓库镜像同步复制和跨区域镜像仓库同步管理;提供基于项目的用户角色权限控制,同时添加了镜像扫描功能帮助排除镜像漏洞。
主要功能包括:
- 镜像仓库管理:支持镜像仓库的创建、查找、修改、删除;
- 镜像管理:支持上传、下载、分享自建镜像;
- 镜像中心:支持官方镜像列表(云平台提供)/Docker hub镜像/第三方镜像列表,支持用户收藏镜像;
- 镜像构建:支持从代码库直接构建镜像,代码源可选择云平台代码托管服务、第三方公共代码托管服务(Github/码云Gitee)、用户自建代码仓托管库(Gitlab);支持对接云平台CI/CD流水线服务。
- 项目管理:根据对镜像的管理需求创建镜像项目,项目将作为创建的私人镜像地址的前缀。创建的项目可用来对应一个公司、组织或个人用户,也可以对应一个大的项目,项目可以有效的管理镜像仓库,同时每个项目可根据用户角色进行授权和权限功能控制,包括管理权限、编辑权限、读取权限,还可查询项目的用户信息,包括:用户名称,用户管理项目的权限信息。
术语说明
术语 | 说明 |
---|---|
CRS | 容器镜像服务CRS(Container Registry Service)为用户提供了存储docker镜像文件的仓库,用户可以在线管理自己的镜像仓库,并在线构建、存储、分享、推送容器镜像。容器镜像服务产品支持的范围包括:镜像仓库管理、镜像管理、官方镜像(收藏/使用)功能 |
我的镜像 | 可管理个人私有用户Docker镜像仓库,提供镜像上传、下载和设置tag标签 |
镜像中心 | 查看docker-hub的镜像资源,为用户提供了公共容器镜像的检索和收藏功能,同时提供镜像的上传、下载等功能 |
镜像资源 | docker官方镜像以及第三方镜像资源,用户可以在部署容器实例时方便地使用已收藏镜像。 |
项目管理 | 项目可以有效的管理镜像仓库,同时每个项目可根据用户角色进行授权和权限功能控制 |