亚马逊云计算服务(AWS)、谷歌云服务和微软Azure,这三大公共云平台都提供Docker容器注册表。虽然他们的产品看起来很相似,但开发人员在做出选择之前,应该先了解价格和功能方面的差异。
公共云供应商的云容器注册表使用户能够托管容器镜像,并通过该供应商的容器服务进行部署。***选项是Amazon Elastic Container Registry(ECR)、Azure Container Registry和Google Container Registry。
在大多数情况下,开发人员不必使用其特定云供应商提供的云容器注册表,即使他们正在使用该供应商的容器服务。他们通常可使用第三方容器注册表,例如Docker Hub。但是,由于某些原因,云服务提供商原生注册表通常是最简单的选择。
成本比较
这三个云容器注册表之间***的区别之一是价格。AWS ECR、Azure Container Registry和Google Container Registry之间不仅费率不同,而且定价结构也不同。
AWS ECR会对存储在容器注册表中的数据收费,还会对数据传入和传出注册表的带宽收费。用户可将数据从ECR传输到同一区域的Elastic Compute Cloud实例,而无需任何成本,但向不同地区传输数据则需要付费。ECR具体定价取决于注册表所在的AWS区域;当达到一定限度,数据存储和带宽都是免费。
另一方面,Azure容器注册表有着更为复杂的定价结构。微软的价格分为三个等级,每个等级按固定价格计费,并有固定的存储空间。这种结构可能看起来很简单,但它不包括网络带宽费用,这些费用单独计算。用户还必须单独为容器镜像构建付费,价格为每秒CPU时间0.00005美元。对于很多用户来说,这是很小的成本,但对于经常重建容器图像的人来说,这可能不是小数目。
而Google Container Registry的定价与ECR类似。用户根据他们使用的数据存储量和网络带宽付费。但是,默认情况下,Google Container Registry会将数据存储在多区域存储桶中。
云容器注册表中的其他主要差异
地理冗余使容器图像能够分布在多个云中;当一个区域变得不可用,用户可以从另一个区域访问容器图像。地理冗余还可以提高性能,因为它使企业能够将容器镜像放置在地理位置靠近用户的数据中心。
但对于不同云提供商,此功能会有所不同。
Google Container Registry默认提供地理冗余。 Azure容器注册表允许用户配置重复地理,但此功能仅在高级服务层中提供,这是最昂贵的服务级别。AWS不提供在多个地区传播容器图像的直接方法,ECR仅作为区域服务设计。如果要在ECR中实现地理冗余,用户必须在不同区域手动设置多个注册表,而保持这些图像同步需要大量工作。
通过AWS ECR和Azure容器注册表界面,开发人员可通过Web门户在其注册表中管理容器镜像。此外,这两个容器注册表都提供使用命令行界面来管理容器镜像的选项。另一方面,Google Container Registry要求开发人员使用Google的软件开发工具包命令行工具来推送和拉取容器镜像。