私有镜像仓库选型:Harbor VS Quay

Private Docker Registry Selection: Harbor VS Quay

Posted by Robin on November 23, 2019

Docker 虽然提供公有镜像仓库 Docker hub,但是满足不了绝大部分企业对镜像仓库私有化部署的需求。 私有镜像仓库解决方案中,作为 CNCF 项目的 Harbor 长期处于统治地位,得到非常广泛的使用。 近期 Red Hat 开源镜像仓库项目 Quay,为私有镜像仓库增加了一种选择,因此引起了大家的极大兴趣。 下面将全面地对比 Harbor 和 Quay,为它们之间的选型提供指导。

Overview

Harbor 是 VMware 中国研发团队在 2016 年开源的镜像仓库项目。当时一般使用 Docker 官方提供的 Docker Registry 部署私有镜像仓库, 但是它只能提供 API 和镜像的操作,缺少 UI 和其他辅助功能,对普通用户很不友好。 Harbor 就是抓住这点,在原生 Docker Registry 基础上打造企业级镜像仓库,满足企业对镜像仓库的一些额外需求,因此能够快速地推广开来。

Quay 其实是非常有名的开源公司 CoreOS 的产品,CoreOS 在 2018 被 Red Hat 收购。 CoreOS 是一家非常有创新力的公司,开发出很多明星级的开源项目,例如:分布式 KV 存储 etcd,镜像安全扫描 clair 等。 Quay 在开源之前,一直以公有镜像仓库提供服务 quay.io,类似于 Docker hub。这次开源后,能够提供私有化部署。

Harbor 和 Quay 不仅功能上非常类似,而且名字上也非常接近。Harbor 是港湾、港口的意思,而 Quay 是指码头。

Harbor vs Quay

Harbor 和 Quay 的定位都是镜像仓库解决方案,它们之间的各方面对比如下表所示:

对比项 Harbor Quay
语言 Golang Python
部署方式 公 + 私
用户管理 支持 DB、LDAP 和 OIDC 支持 LDAP、Keystone、OIDC、Google 和 GitHub
机器人账号 支持 支持
权限管理 支持 支持
图形用户界面 支持 支持
国际化 支持中英等 5 种语言 仅支持英文
使用文档 非常全面 较少
镜像安全扫描 支持 支持
镜像可信 支持 支持
镜像清理 支持 支持
审计日志 支持 支持
Helm 管理 支持 支持
多仓库管理 支持 不支持
镜像同步 支持 不支持
代码仓库集成 不支持 支持
镜像构建 不支持 支持
镜像下载 不支持 支持
通知 支持 Webhook 支持站内信、Webhook、Email、Slack 等

从多方面的详细对比来看,Harbor 和 Quay 的绝大部分功能都是重叠的。但是,Harbor 特有的多仓库管理以及镜像同步功能,一直作为 Harbor 非常大的亮点,并且有很大的实用价值。 Harbor 支持中文,对于广大中国用户的来说,也是一个非常大的优势。至于 Quay 有而 Harbor 没有的 SCM 集成的能力,并不能为 Quay 形成多大优势。 因为绝大部分企业已经有基本的 CI,而 Quay 提供的构建能力太简单,不足以替换现有的 CI。

Conclusion

Quay 相对于 Harbor 并没有明显优势,但是存在作为新开源项目两个不可避免的劣势:用户积累,开源社区。 Harbor 已经积累了广泛的用户,各方面都得到充分地检验,加上 CNCF 的背书,会使其用户群体进一步快速扩大。在这种情况下,Quay 是很难跟 Harbor 抢用户的。 Harbor 的核心贡献者虽然仍是 VMWare,但是经过这么多年的积累,已经形成了相对完善的社区,这对一个开源项目的快速发展也是至关重要的。 因此,Quay 的开源并不能撼动 Harbor 的地位,Harbor 仍将是私有镜像仓库领域的王者。