Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >容器镜像仓库之选:企业级容器registry Harbor实践(上)

容器镜像仓库之选:企业级容器registry Harbor实践(上)

作者头像
yuanyi928
发布于 2018-04-02 03:42:04
发布于 2018-04-02 03:42:04
2K0
举报
文章被收录于专栏:EAWorldEAWorld

目录:

1.背景

2.开源Docker Registry的不足

3.新的选择--Harbor

4.Harbor的使用

背景

公司于去年启动了新一代数字化企业云平台的研发,基于DevOps打造新一代的企业云计算平台,底层的容器云平台是重要的可选组件。容器云目前启动了第三版的重构,一些组件又有了重新选型的机会。

DevOps这个概念已经出来很多年了,相信大家已经不陌生了,说简单点,它就是开发(Development)和运维(Operations)这两个领域的合并。那么为什么要合并这两个领域?原因很多,但首要原因是:目前这两个领域的工作流程是脱节的,绝对的脱节。很多公司的开发部门和运维部门之间存在的深刻矛盾,其实就是这个“脱节”造成的。

开发部门在产品研发的时候,没有充分考虑部署要求,开发完了只管丢给运维去上线。运维拿到东西上线困难,回来找开发,开发却不一定认可,双方扯来扯去,最后开发修改,运维又有问题再来回找开发,不断循环。最后导致整个产品上线效率低下,运行不稳定。

公司的新一代数字化企业云平台,就是希望基于Devops理念,为企业打造集人员,需求,开发,自动构建,测试,运维一体的企业云平台。我们来看一下我们平台整体的逻辑架构:

从上图可以看出,平台在逻辑上是分成多层的,硬件上有基础设施平台,基础设施平台上又有基础服务平台,最上层则是各种微应用。DevoOps则是纵跨多层,它由多个领域系统构成,如TM(租户管理),PM(项目管理),SRM(软件资源管理),SCM(软件配置管理)等等,协调并管理整个平台资源。其中,基础设施平台中有IaaS,也有CaaS。IaaS与CaaS都是可选组件,他们可以只有一个,也可以两者都有。两者都有的时候,CaaS可以存在于IaaS之中。这里图中的CaaS指的是我们的容器云。

我们再来看一下我们的DevOps平台的整体技术选型:

如图,在选型时,我们将整个平台主要分成了三块。容器云对应基础设施层中的容器层。容器目前采用的是Docker, 平台管理用了谷歌的kubernetes, 容器网络目前是用的flannel,dns用的skydns, 平台系统使用的是coreos。容器镜像仓库,容器云的前两个小版本,我们使用的是开源的Docker Registry,配合nginx搭建容器镜像私库,使用还比较稳定,但也发现了它的一些不足。

开源Docker Registry的不足

同很多团队进行容器云构建的初始阶段一样,一开始我们并不太注重安全,容器仓库一般都是配置成insecure-registry直接使用。这次,我们决定加强安全方面的控制。我们发现了它的一些不足如下:

  • 用户与鉴权 Docker Registry V2可以基于htpasswd文件进行简单的用户管理,但是维护不便,也没有对外的API可供集成。
  • 缺少日志与审记 Docker Registry没有日志收集能力,也缺少审记。
  • 复制与同步 在不同的Registry实例之间复制镜像是十分普遍的需求,但Docker Registry只支持将公有Registry的镜像同步至私有仓库 。
  • 镜像删除不便 Docker客户端没有提供删除仓库镜像的命令,删除仓库中的镜像,只能通过其它工具调用rest api 。
  • 缺少图形化的管理界面

要想补上这些缺点,需要在自已的容器云中做一些加强,需要工作量。除了Docker Registry,还有没有其它的选择,已经补齐了这些能力,或部分补齐了呢?于是,我们做了一点小了解。

目前业界可选的Containger Registry主要有如下:

  • Docker Hub 提供了直观的界面、自动化构建、私有仓库以及众多官方镜像。这是官方的公有库,下载镜像必须联接外网。
  • Docker Registry 最流行的开源registry。你可以在自己的设施上运行或者使用Docker Hub。
  • Quay.io 最初由一个两人工作室开发的产品,专注于Docker私有库。目前已被Coreos收购。
  • CoreOS Enterprise Registry Coreos收购Quay.io之后推出的企业级Containger Registry,提供细化权限和审计跟踪。
  • Nexus 3.0 nexus原来只是一个maven的仓库服务器,升级到3.0之后,也可以使用它对docker的镜像进行管理。
  • Harbor vmware开源的企业级容器registry,基于开源的Docker Registry进行增强。

Docker Hub相信大家都不陌生,用来做私库的源库是可以的,可以将一些基础镜像从这个云库拉到私库中。它并不适合在容器云中直接使用,下载镜像时需要连外网,速度也是个大问题。

Docker Registry就不说了,接下来的Quay.io,CoreOS Enterprise Registry是付费的,或者是商业付费的,不考虑。Nexus 3有图形化的管理页面可以操作镜像,但其它的能力与Docker Registry差不多。最后看到的harbor,则令我们眼前一亮。

新的选择--Harbor

Harbor是VMware公司于2016年开源的企业级Docker Registry项目。它是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。

作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor的特点如下:

  • 基于角色的访问控制 - 用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  • 镜像复制 - 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云多云的场景。
  • 图形化用户界面 - 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAP 支持 - Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API - RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  • 部署简单 - 提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

Harbor基于Docker Registry做了增强,添加了很多企业级管理需要的能力,使原来能力较弱的Docker Registry更适合于生产环境中使用。

我们再看看Harbor的整体架构:

Harbor在架构上主要由五个组件构成:

  • Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
  • Registry: 负责储存Docker镜像,并处理dockerpush/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:为coreservices提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
  • Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

我们再来看一个harbor的核心概念

以上是Harbor的核心概念。一个项目可以看成一个用户的小私库,项目成员按照其角色,可以上传,下载,删除镜像,或添加删除成员等。系统管理员可以创建镜像库复制目标,为项目设置复制策略,可以从其它的镜像库复制镜像过来。复制策略会产生复制任务。项目下面可拥有多个镜像,而每个镜像则可以有多个镜像标签。项目包含日志。

Harbor的使用

harbor提供了web ui。我们来看一下harbor是如何使用的:

首先是通过管理员创建新的用户,然后登陆至新用户,使用新用户创建项目。这样新用户就会自动成为这个用户的项目管理员。

接下来可以使用新创建的用户,在docker命令行中登陆至镜像仓库,并上传镜像。注意,登陆的时候,指定为整个镜像仓库的地址,而不是仓库地址加项目名称。镜像要上传至指定项目下,需要为镜像打上 "镜像仓库地址/项目名/镜像名:镜像tag" 这样格式的tag,再去执行镜像上传才可以。

镜像上传完成了,可以在web ui中项目下看到它的信息。可以在web页面中很方便地删除整个镜像,或者删除镜像的单个Tag。使用docker client登陆之后,也可以下载到上传上去的镜像。

项目创建之后,项目管理员可以再为项目添加新的成员。成员有角色之分,项目管理员,开发人员与访客。项目管理员有最大的权限,开发人员可以上传下载删除镜像,访客只能下载镜像。

系统管理员可以创建复制目标,以便为项目创建复制策略。创建复制目标时,需要指定目标的url及用户名与密码。目标可以是harbor,也可以就是docker registry。

复制目标创建好了,就可以在项目下创建复制策略。复制策略一创建好,马上就会启动复制任务,将项目下的镜像push至目标仓库。同步时,只同步镜像,harbor的项目等不在同步范围之内。

这一篇主要讲了我们选型harbor的过程。并没有做太多的对比研究,主要还是沿着原来的老路子,只是有了更完善的方案。然后介绍了一下harbor的特点,架构及核心概念,最后以harbor本身的web-ui为例,介绍了harbor的使用,主的是让大家对harbor有一个比较全面的了解。

下一篇中,我们将着重介绍harbor的用户,同步与复制等设计,以及harbor的部署,如何集成,有兴趣的同学欢迎持续关注。

关于作者:

秦双春

现任普元云计算架构师。曾在PDM,云计算,数据备份,移动互联相关领域公司工作,10年IT工作经验。曾任上海科企软件桌面虚拟化产品的核心工程师,主导过爱数TxCloud云柜的设计与开发,主导过万达信息的食安管理与追溯平台的移动平台开发。国内云计算的早期实践者,开源技术爱好者,容器技术专家。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 EAWorld 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
企业级Docker镜像仓库Harbor部署与使用
在实际生产运维中,往往需要把镜像发布到几十、上百台或更多的节点上。这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的,我们需要一个像Git仓库一样系统来统一管理镜像。这里介绍的是一个企业级镜像仓库Harbor,将作为我们容器云平台的镜像仓库中心。
星哥玩云
2022/07/28
9050
企业级Docker镜像仓库Harbor部署与使用
为什么有了Docker registry还需要Harbor?
目录: 一、Harbor的安全机制 二、Harbor的镜像同步 三、Harbor与K8s的集成实践 四、两个小贴士 五、总结 Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等。 容器的核心在于镜象的概念,由于可以将应用打包成镜像,并快速的启动和停止,因此容器成为新的炙手可热的基础设施CAAS,并为敏捷和持续交付包
yuanyi928
2018/03/30
13.2K0
为什么有了Docker registry还需要Harbor?
企业级Docker仓库-Harbor
作为一个深居墙内,或者是公司服务器无法连接网的测试,在引入新的工具或者平台的时候总会有这样的问题:即使使用 Docker 来安装部署,也会出现下载极慢,或者因为各种网络原因超时,甚至无法直接下载导致的安装错误或者无能无力。
TestOps
2022/04/07
3920
企业级Docker仓库-Harbor
红帽宣布发布企业容器仓库开源项目 Quay
今天,红帽推出了 Quay 项目的开源项目,该项目是代表 Red Hat Quay 和 Quay.io 的代码的上游项目。根据 Red Hat 的开源承诺,Project Quay 是新开源的,代表了自 2013 年以来 CoreOS(现在是 Red Hat)围绕 Quay 容器注册表进行的多年工作的高潮。
米开朗基杨
2019/11/15
1.4K0
用Harbor和Kubernetes构建高可用企业级镜像仓库
VMware 公司去年3月开源了企业级容器 Registry 项目 Harbor ,由VMware中国研发的团队负责开发。Harbor 可帮助用户迅速搭建企业级的 registry 服务,它提供了管理图形界面, 基于角色的访问控制 RBAC,镜像远程复制(同步),AD/LDAP 集成、以及审计日志等企业用户需求的功能,同时还原生支持中文和英文,深受国内外用户的喜爱。许多开源社区的开发者也给 Harbor 项目添砖加瓦,贡献代码、反馈问题和提出建议。在大家共同努力下, Harbor 项目推出以来,在 GitHub 获得了近2000个点赞星星和500多个 forks。
Henry Zhang
2019/04/12
8370
用Harbor和Kubernetes构建高可用企业级镜像仓库
可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker 镜像仓库管理工具呢? 这里有一个简单好用的企业级 Registry 服务器 - Harbor,推荐在生产环境上使用。 Harbor 简介 Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker registry服务。 它以Docker公司开源的re
程序员鹏磊
2018/02/09
2.5K0
可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
一个优秀的镜像仓库是什么样的?
一、镜像仓库的类型 常见的镜像仓库有三种: 1.Container Registry Container Registry是一个应用程序,用于上传(推送)和下载(拉)容器图像。 从历史上看,注册管理机构规范完全由Docker定义,最近通过OCI分布规范独立完成。 目前版本的Openshift内部使用的是docker registry V2,作为bulid config成功以后的镜像存放位置。 2.Enterprise Registry Enterprise Registry,它提供了更多适用于企业环境的附加
魏新宇
2018/06/25
2.6K0
企业级Docker镜像仓库的管理和运维
题图摄于上海虹口区 本文首发于CSDN公众号和程序员杂志。介绍企业容器镜像管理的细节。笔者将于11月20日在SDCC大会分享相关内容,欢迎参加。 容器应用的使用越来越广泛,容器技术突出的优点就是开发运维一体化。通过把应用及其所依赖的软件包、操作系统文件等封装在容器镜像中,使得应用在开发、测试和发布过程中都具有相同的运行环境,带来极大的便利。从图1这张经典的Docker容器状态转换图可以看到,容器镜像(images)的关联箭头最多,不言而喻,镜像就是容器技术的核心所在。 图1 Docker容器状态转换图
Henry Zhang
2023/04/18
6110
企业级Docker镜像仓库的管理和运维
玩转容器镜像-Harbor镜像仓库的管理和运维
题图摄于上海外滩 想写一篇关于容器镜像管理方法的文章,由于时间问题一直未能完成。上周在DockOne社区做了关于Registry的技术直播,现把相关内容和大家汇总分享。 本文主要讲述了在开发运维中的管理容器镜像方法。为了便于说明原理,较多地使用Harbor作为例子。 内容主要包括: 开发和生产环境中镜像仓库的权限控制; 镜像远程同步(复制)的原理; 大规模应用镜像发布方式; 镜像删除和空间回收; Registry高可用性设计。 首先简单介绍一下Harbor项目。Harbor是由VMware中国研发团队负责开
Henry Zhang
2023/04/18
8730
玩转容器镜像-Harbor镜像仓库的管理和运维
Harbor:开源企业级容器Registry架构简介
VMware公司最近开源了企业级Registry项目Harbor,由VMware中国研发的团队负责开发。Harbor项目是帮助用户迅速搭建一个企业级的registry 服务。它以Docker公司开源的registry为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文,对广大中国用户是一个好消息。本文将介绍Harbor项目的主要组件,并阐述Harbor的工作原理。
Henry Zhang
2019/04/12
2K0
Harbor:开源企业级容器Registry架构简介
企业实战(5) Docker私有镜像仓库Harbor的部署与使用详解
 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
非著名运维
2022/06/22
9400
企业实战(5)  Docker私有镜像仓库Harbor的部署与使用详解
Harbor之企业级私有镜像存储仓库入门实践
Harbor 组成 描述: 用于部 署Harbor 的 Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成,这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。
全栈工程师修炼指南
2022/09/29
2.9K0
Harbor之企业级私有镜像存储仓库入门实践
Harbor开源镜像仓库企业级实践(1/3)
Harbor[1]是由VMware公司中国团队为企业用户设计的Registry server开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。Harbor是CNCF毕业的项目,可提供合规性,性能和互操作性,以帮助您跨Kubernetes和Docker等云原生计算平台持续,安全地管理工件。
公众号: 云原生生态圈
2020/07/14
1.1K0
docker-企业级镜像仓库harbor
 Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。
yuezhimi
2020/09/30
5770
docker-企业级镜像仓库harbor
RedHat 开源企业镜像项目 Quay
Quay 是一个registry,存储,构建和部署容器的镜像仓库。它分析您镜像中的安全漏洞,可帮助您减轻潜在的安全风险问题。此外,它提供地理复制和BitTorrent分发,以提高分布式开发站点之间的性能,并提高灾难恢复的弹性和冗余性。
YP小站
2020/06/04
2.9K0
RedHat 开源企业镜像项目 Quay
【干货】Harbor介绍及实践
以Docker为代表的容器技术的出现,改变了传统的交付方式。通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率。如何高效地管理和分发Docker镜像?是众多企业需要考虑的问题。
杨振涛
2019/03/19
16.4K0
【干货】Harbor介绍及实践
Kubernetes 之 Harbor 仓库
Docker 容器应用的开发和运行离不开可靠的镜像管理,虽然 Docker 官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的 Registry 也是非常必要的。Harbor 是由 VMware 公司开源的企业级的 Docker Registry 管理项目,它包括权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等功能,在新版本中还添加了Helm仓库托管的支持。
民工哥
2021/04/21
1.8K0
Harbor: 跨数据中心复制Docker镜像的开源实现
VMware公司3月份开源了企业级Registry项目Harbor,由VMware中国研发的团队负责开发。Harbor可帮助用户迅速搭建企业级的registry 服务。它提供了管理图形界面, 基于角色的访问控制RBAC,镜像远程复制(同步),AD/LDAP集成、以及审计日志等企业用户需求的功能,同时还原生支持中文,深受中国用户的喜爱。该项目推出4多个月以来,在GitHub 获得了超过900多个点赞星星和200多个 forks,Github地址:
Henry Zhang
2019/04/12
2.2K0
Harbor: 跨数据中心复制Docker镜像的开源实现
TKE上搭建企业级镜像仓库Harbor
本次我们来讲解下如何在TKE上搭建企业级镜像仓库Harbor,这里我们采用的是helm方式部署到TKE集群上,helm部署的harbor会通过ingress暴露前端页面提供访问,一般我们需要通过域名的https方式来访问Harbor仓库,所以我们需要做如下准备:
聂伟星
2021/01/09
1.7K0
DockerCompose安装Harbor仓库
虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
杨不易呀
2023/11/02
6430
DockerCompose安装Harbor仓库
相关推荐
企业级Docker镜像仓库Harbor部署与使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档