Docker系列-6.企业级Registry镜像仓库
企业级镜像仓库方案
常见的几种docker registry企业级实现,包括Harbor,Quay Enterprise以及Nexus等。
相对于企业级Registry镜像仓库,简易的Registry没有考虑的因素有:
-
缺少UI用户界面
-
缺少角色的权限控制、用户管理、权限管控、行为审计等安全功能
-
无法和企业的统一登录或者LDAP对接
-
缺少对镜像的漏洞扫描等安全防护
-
缺少对镜像文件生命周期维护功能
-
缺少镜像其它镜像仓库的能力
-
缺少高效的镜像文件分发能力,如,使用BT协议进行分发
-
缺少镜像仓库的运行时监控
-
缺少企业级的服务支持,如, bug fix、安全漏洞补丁的通知、产品升级等
-
不适合大规模容器集群的使用,特别是跨地域的在多个数据中心进行镜像的同步
Harbor
Harbor是VMware公司开源的企业级云原生Registry项目, 由中国研发团队开源,包含在vmware tanzu产品中,用来存储、签名并扫描存储工件,能够提供诸如用户管理,访问控制,活动审计,和节点间的复制等一系列高级功能,可以让你迅速的搭建自己的私有镜像仓库。Harbor只能通过docker的方式进行部署,但是Harbor的开源版本并没有与Kubernetes进行深度集成;不能运行在K8S平台上。
Quay Enterprise
Quay.io是第一个使用私有存储库的托管镜像仓库。CoreOS于2014年收购了Quay,以推出首个企业级的镜像仓库。2018年CoreOS被Red Hat收购之后,Red Hat也将Quay Enterprise产品开源并持续提供企业级的支持服务。
Quay Enterprise 也是最早支持 OCI 规范的企业级镜像仓库,与 Kubernetes 集成为 Operator 提供良好的支持,并提供以下的特性:
-
异地复制
-
高可用性和可扩展性
-
安全扫描
-
自动构建触发器
-
时间机器image回滚(基于build版本的回退)
-
细粒度的访问控制
-
详细的日志和审计
-
自动连续垃圾收集,无需停机
-
与多个存储后端集成 (如 ceph 等)
-
支持多种身份提供商:LDAP,OAuth,OpenStack Keystone等。
-
加密的CLI密码
-
洪流分布
-
容器和应用程序注册
-
与Quay.io保持一致的UI和代码库
Nexus3
在企业中Nexus最初是给 Java用的,大家把一些工具包放入Nexus中,后来慢慢发展,可以作为众多软件pipy、yum的仓库,最新版本 Nexus3.x
全面支持 Docker 的私有镜像。所以使用 Nexus3.x
一个软件来统一管理 Docker
, Maven
, Yum
, PyPI
也是一个明智的选择。Nexus支持传统和容器两种方式部署。
总结
它们之间的各方面对比如下表所示:
对比项 | Harbor | Quay | Nexus |
---|---|---|---|
语言 | Golang | Python | Java |
部署方式 | docker容器 | docker容器 | docker容器+传统方式 |
用户管理 | 支持 DB、LDAP 和 OIDC | 支持 LDAP、Keystone、OIDC、Google 和 GitHub | 支持与外部LDAP/AD |
机器人账号 | 支持 | 支持 | 支持 |
权限管理 | 支持 | 支持 | 支持 |
图形用户界面 | 支持 | 支持 | 支持 |
使用文档 | 非常全面 | 较少 | 待定 |
镜像安全扫描 | 支持 | 支持 | 可集成Clair |
镜像可信 | 支持 | 支持 | 待定 |
镜像清理 | 支持 | 支持 | 支持 |
审计日志 | 支持 | 支持 | 待定 |
Helm 管理 | 支持 | 支持 | 支持 |
多仓库管理 | 支持 | 不支持 | 支持多种不同类型仓库管理 |
镜像同步 | 支持 | 不支持 | 支持Proxy代理到另一个镜像库 |
代码仓库集成 | 不支持 | 支持 | 支持 |
镜像构建 | 不支持 | 支持 | 不支持 |
镜像下载 | 不支持 | 支持 | 支持 |
通知 | 支持 Webhook | 支持站内信、Webhook、Email、Slack 等 | 支持 |