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

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

作者头像
yuanyi928
发布于 2018-04-02 03:42:04
发布于 2018-04-02 03:42:04
2K2
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
2 条评论
热度
最新
大佬
大佬
回复回复点赞举报
学习了
学习了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
CLIFF : 结合整帧位置信息的人体姿态和形状估计
基于参数化人体从单张RGB图像重建三维人体姿态与形状,由于图片的深度模糊性,是一个欠约束问题。由于这个问题在 AR/VR 、动作分析等领域的重要性,它引起了很多关注。
用户1324186
2022/11/07
1.7K0
CLIFF : 结合整帧位置信息的人体姿态和形状估计
OmniColor: 基于全局相机位姿优化给LiDAR点云着色方法
文章:OmniColor: A Global Camera Pose Optimization Approach of LiDAR-360Camera Fusion for Colorizing Point Clouds
点云PCL博主
2024/04/25
9950
OmniColor: 基于全局相机位姿优化给LiDAR点云着色方法
SLAM3R:基于单目视频的实时密集3D场景重建
北京大学陈宝权教授团队联合港大等开发的 SLAM3R系统取得突破:首次仅用普通手机RGB视频,就能实时(20+FPS)生成高质量、高密度3D场景模型。 它颠覆传统流程,通过神经网络直接端到端预测3D点云,无需求解复杂相机参数。核心是“图像到点”和“本地到世界”双模块,利用滑动窗口处理视频片段并融合局部点云为全局模型。实验证明其精度和完整性超越现有实时方法,为AR、机器人等应用打开大门。
CoovallyAIHub
2025/06/11
1750
SLAM3R:基于单目视频的实时密集3D场景重建
轻量级实时三维激光雷达SLAM,面向大规模城市环境自动驾驶
对于自动驾驶汽车来说,在未知环境中的实时定位和建图非常重要。本文提出了一种快速、轻量级的3D激光雷达SLAM,用于大规模城市环境中自动驾驶车辆的定位。文中提出了一种新的基于深度信息的编码方法,可以对具有不同分辨率的无序点云进行编码,避免了点云在二维平面上投影时丢失维度信息。通过根据编码的深度信息动态选择邻域点来修改主成分分析(PCA),以更少的时间消耗来拟合局部平面。阈值和特征点的数量根据距离间隔自适应,从而提取出稀疏的特征点并均匀分布在三维空间中。提取的关键特征点提高了里程计的准确性,并加快了点云的对齐。在KITTI和MVSECD上验证了该算法的有效性和鲁棒性。里程计估计的快速运行时间为21ms。与KITTI的几种典型的最先进方法相比,所提出的方法将平移误差减少了至少19%,旋转误差减少了7.1%。
一点人工一点智能
2023/02/15
3.7K0
轻量级实时三维激光雷达SLAM,面向大规模城市环境自动驾驶
视觉几何嵌入Transformer(VGGT):前馈神经网络直接估算多输入视图三维场景属性,多任务领先且适用于实时应用 !
作者提出了一种名为VGGT的前馈神经网络,该网络能够直接从场景的一张、几张或多张视图中推理出所有关键的三维属性,包括相机参数、点图、深度图和三维点轨迹。这种方法在三维计算机视觉领域向前迈进了一步,因为以往的模型通常局限于并专门针对单一任务。VGGT结构简单且高效,能够在不到一秒的时间内重建图像,并且仍然优于需要使用视觉几何优化技术进行后期处理的替代方法。网络在多个三维任务中达到了最先进的效果,包括相机参数估计、多视图深度估计、密集点云重建和三维点跟踪。此外,作者还展示了使用预训练的VGGT作为特征 Backbone 显著提升了下游任务的效果,例如非刚性点跟踪和前馈新型视角合成。代码和模型已在https://github.com/facebookresearch/vggt公开发布。
未来先知
2025/05/07
3290
视觉几何嵌入Transformer(VGGT):前馈神经网络直接估算多输入视图三维场景属性,多任务领先且适用于实时应用 !
CT-ICP: 带有闭环的实时且灵活鲁棒的LiDAR里程计
文章:CT-ICP: Real-time Elastic LiDAR Odometry with Loop Closure
点云PCL博主
2023/08/21
5880
CT-ICP: 带有闭环的实时且灵活鲁棒的LiDAR里程计
SemanticSLAM:基于学习的语义地图构建和稳健的相机定位
文章:SemanticSLAM: Learning based Semantic Map Construction and Robust Camera Localization
点云PCL博主
2024/04/11
1.2K0
SemanticSLAM:基于学习的语义地图构建和稳健的相机定位
一次采集无需特定目标的LiDAR-相机外参自动化标定工具箱
文章:General, Single-shot, Target-less, and Automatic LiDAR-Camera Extrinsic Calibration Toolbox
点云PCL博主
2023/08/21
1K0
一次采集无需特定目标的LiDAR-相机外参自动化标定工具箱
基于语义分割的相机外参标定
文章:Extrinsic Camera Calibration with Semantic Segmentation
点云PCL博主
2022/09/13
9580
基于语义分割的相机外参标定
单图像3D重建,ORG 模型如何统一摄像机参数估计与物体地面关系 ?
在联合物理可行地面的物体重建任务虽然尚未广泛探索,但其重要性不容忽视。这在图像编辑应用领域尤为相关,因为它影响着诸如可控阴影/反射合成和物体视图操作等关键方面。在这项工作中,作者旨在从单一图像中预测物体在3D空间中准确且基于地面的表示,特别是在不受限制的相机条件下。最近的单视图方法在处理物体重建方面显示出巨大潜力。然而,由于缺乏集成的物体-地面建模,使用这些方法重建的物体在放置在平坦表面上时常常显得“悬浮”或“倾斜”,这极大地阻碍了真实感的渲染。
AIGC 先锋科技
2024/08/05
2500
单图像3D重建,ORG 模型如何统一摄像机参数估计与物体地面关系 ?
基于激光雷达和单目视觉融合的SLAM和三维语义重建
文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision
点云PCL博主
2023/08/21
1.7K0
基于激光雷达和单目视觉融合的SLAM和三维语义重建
基于语义地图的单目定位用于自动驾驶车辆
文章:Monocular Localization with Semantics Map for Autonomous Vehicles
点云PCL博主
2024/06/21
3780
基于语义地图的单目定位用于自动驾驶车辆
CPEM:通过身份一致性和表情独占约束实现精确的面部运动重定向
现有方法通常将该问题表述为三维人脸重建问题,该问题从人脸图像中估计人脸身份和表情等人脸属性。然而,由于缺乏身份和表情的ground-truth标签,大多数基于3d人脸重建的方法都不能准确地捕捉人脸的身份和表情。因此,这些方法可能无法实现预期的性能。
用户1324186
2024/05/11
3310
CPEM:通过身份一致性和表情独占约束实现精确的面部运动重定向
基于图优化的多相机手眼标定框架
文章:A Graph-based Optimization Framework for Hand-Eye Calibration for Multi-Camera Setups
点云PCL博主
2023/08/21
4180
基于图优化的多相机手眼标定框架
LESS-Map:用于长期定位轻量级和逐渐演进的语义地图方案
文章;LESS-Map: Lightweight and Evolving Semantic Map in Parking Lots for Long-term Self-Localization
点云PCL博主
2023/10/25
4910
LESS-Map:用于长期定位轻量级和逐渐演进的语义地图方案
Ground-VIO:在线标定相机-地面参数的单目视觉惯性里程计
文章:Ground-VIO: Monocular Visual-Inertial Odometry with Online Calibration of Camera-Ground Geometric Parameters
点云PCL博主
2023/08/21
1.1K0
Ground-VIO:在线标定相机-地面参数的单目视觉惯性里程计
基于激光雷达强度信息的实时SLAM方案
文章:Real-Time Simultaneous Localization and Mapping with LiDAR intensity
点云PCL博主
2023/08/21
6900
基于激光雷达强度信息的实时SLAM方案
RadarSLAM:可用于全天候的大规模场景的毫米波雷达SLAM
文章:RadarSLAM: Radar based Large-Scale SLAM in All Weathers
点云PCL博主
2022/12/27
1.8K0
RadarSLAM:可用于全天候的大规模场景的毫米波雷达SLAM
SensorX2car:在道路场景下的完成传感器到车体坐标系标定
文章:SensorX2car: Sensors-to-car calibration for autonomous driving in road scenarios
点云PCL博主
2023/08/21
1K0
SensorX2car:在道路场景下的完成传感器到车体坐标系标定
一个通用的多相机视觉SLAM框架的设计和评估
文章:Design and Evaluation of a Generic Visual SLAM Framework for Multi-Camera Systems
点云PCL博主
2023/08/21
9280
一个通用的多相机视觉SLAM框架的设计和评估
推荐阅读
相关推荐
CLIFF : 结合整帧位置信息的人体姿态和形状估计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档