Harbor简介

来自CloudWiki
跳转至: 导航搜索

Docker HUB的缺点

Docker HUB为人们提供了很多官方镜像和个人上传的镜像,用户可以下载机构或个人提供的镜像,也可以上传自己的本地镜像,需要的时候也可以随时下载。但缺点是:

  • 由于网络的原因,从Docker HUB上下载和上传镜像速度可能会比较慢。
  • 在生产环境中使用的Docker镜像内可能包含重要代码、配置等信息,这些信息如果上传到Docker HUB上就会被外部人员获取,有泄露的风险。

使用Docker私有仓库则解决了以上两个问题,在内网搭建Docker私有仓库可以使内网环境下上传和下载的速度非常快,不受外网带宽等因素的影响,并且仓库使用SSL安全连接,用户只有获取此证书才能使用。所有有证书的人员,可以直接从仓库中下载镜像。只有经过用户名、密码认证后的人员,才能往仓库中上传镜像。

Harbor的概念

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。有了Docker自带的registry为什么还要用Harbor?主要有以下几点原因。

①Harbor可以根据角色灵活的进行权限控制,如访客只需给pull权限即可。

②Harbor可以实现镜像同步。生产环境中对系统稳定性要求高,多个仓库可保证其高可用性。更常用的场景是,在企业级软件环境中,会在软件开发的不同阶段存在不同的镜像仓库。

③Harbor可利用图形界面进行镜像的管理。

④Harbor提供分层传输机制,优化网络传输:Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。

Harbor的组成

Harbor主要由下面几个组件组成。

①proxy:Nginx前端代理,主要是分发前端页面UI访问和镜像上传和下载流量。

②registry:镜像仓库,负责存储镜像文件。

③核心服务:提供Web UI,数据库,Token认证,webhook等功能。

④日志服务:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

⑤database:用来存储核心服务的一些数据。

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