Harbor简介
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)的服务端口。