Azure 容器注册表服务层级

Azure 容器注册表分为多个服务层级(也称为 SKU)。 这些层级提供可预测的定价和多个选项,用来适应你在 Azure 中的专用 Docker 注册表的容量和使用模式。

层级 说明
基本 供开发者了解 Azure 容器注册表的入口点(已优化过成本)。 基本注册表具有与标准版和高级版相同的编程功能(例如 Microsoft Entra 身份验证集成映像删除以及 webhook)。 但其附带的存储和映像吞吐量最适合使用较少的场景。
标准 标准注册表的功能与基本注册表相同。不同之处在于,前者附带更多的存储和映像吞吐量。 标准注册表应能够满足大部分生产方案的需求。
高级 高级注册表附带的存储和并发操作数最多,支持大容量方案。 除增加了映像吞吐容量之外,高级注册表还增添了其他功能,例如用于跨多个区域管理一个注册表的异地复制、用于映像标记签名的内容信任、用于限制注册表访问的具有专用终结点的专用链接

“基本”、“标准”和“高级”层级全都提供相同的编程功能。 它们还全都受益于完全由 Azure 托管的映像存储。 选择的层级等级越高,性能和可缩放性就越高。 使用多个服务层级,你可以从“基本”层级开始,然后随着注册表使用量增长转换到“标准”和“高级”层级。

例如:

  • 如果购买基本层注册表,则其包括 10 GB 的存储。 在此处支付的价格是每天 0.167 美元。 按美元计算价格。
  • 如果你有基本层注册表并使用 25 GB 的存储,则需要为额外的 15 GB 支付 0.003 美元/天*15 = 0.045 美元/天。
  • 因此,具有 25 GB 存储的基本 ACR 的定价为每天 0.167 美元+0.045 美元= 0.212 美元,其他相关费用(如网络、内部版本等)依据定价 - 容器注册表

服务层级功能和限制

下表详细介绍了“基本”、“标准”和“高级”服务层级的功能和注册表限制。

资源 基本 标准 高级
包括的存储1 (GiB) 10 100 500
存储限制 (TiB) 40 40 40
最大映像层大小 (GiB) 200 200 200
最大清单大小 (MiB) 4 4 4
每分钟读取操作数2、3 1,000 3,000 1万
每分钟写入操作数2、4 100 500 二千
下载带宽2 (Mbps) 30 六十 100
上传带宽2 (Mbps) 10 20 50
Webhook 2 10 500
异地复制 支持
可用性区域 支持
内容信任 支持
具有专用终结点的专用链接 支持
• 专用终结点数 200
公共 IP 网络规则 100
服务终结点 VNet 访问 预览
• 虚拟网络规则 100
客户管理的密钥 支持
存储库范围内的权限 支持 支持 支持
• 令牌数 100 500 50,000
• 范围映射数 100 500 50,000
• 操作 500 500 500
• 每个范围映射的存储库数5 500 500 500
匿名拉取访问 预览 预览

1在每日费率中包括的每个层级的存储。 可以使用额外的存储空间,空间上限为注册表存储上限,且每 GiB 都会产生额外每日费率。 有关费率的信息,请参阅 Azure 容器注册表定价。 如果需要超出注册表存储限制的存储空间,请联系 Azure 支持。

2读取操作数、写入操作数和带宽是最小估计值。 Azure 容器注册表致力于根据使用情况来提高性能。 资源、ACR 和设备必须位于同一区域,才能实现快速的下载速度。

3docker pull 将根据映像中的层数和清单检索行为转换为多个读取操作。

4docker push 将根据必须推送的层数转换为多个写入操作。 docker push 包含 ReadOps,用于检索现有映像的清单。

5content/deletecontent/readcontent/writemetadata/read 的单个操作对应于每个范围映射的存储库的限制metadata/write

注册表吞吐量和限制

吞吐量

生成高速率的注册表操作时,请使用服务层级对读写操作和带宽的限制作为指导,以实现预期最大吞吐量。 这些限制会影响数据平面操作,包括列出、删除、推送和拉取映像和其他项目。

要准确估计映像拉取和推送的吞吐量,请考虑注册表限制和以下因素:

  • 映像层的数量和大小
  • 跨映像重用层或基础映像
  • 每次拉取或推送可能需要的额外 API 调用

有关详细信息,请参阅 Docker HTTP API V2 的文档。

在对注册表吞吐量进行评估或故障排除时,还要考虑客户端环境的配置:

  • 用于并发操作的 Docker 守护程序配置
  • 与注册表的数据终结点的网络连接(如果注册表是异地复制的)。

如果你遇到注册表吞吐量的问题,请参阅对注册表性能进行故障排除

示例

要将单个 133 MB 的 nginx:latest 映像推送到 Azure 容器注册表需要对映像的五个层执行多个读写操作:

  • 读取映像清单的读取操作(如果映像清单存在于注册表中)
  • 写入映像的配置 blob 的写入操作
  • 写入映像清单的写入操作

限制

当注册表确定请求速率超出注册表的服务层级允许的限制时,你可能会遇到拉取或推送操作的限制。 你可能会看到类似于 Too many requests 的 HTTP 429 错误。

当你在非常短的时间内生成大量映像拉取或推送操作时,即使读写操作的平均速率未超出注册表限制,也可能会暂时出现限制。 你可能需要在代码中通过一些回退操作来实现重试逻辑,或者降低对注册表的请求的最大速率。

显示注册表使用情况

在 Azure CLI 中使用 az acr show-usage 命令、在 Azure PowerShell 中使用 Get-AzContainerRegistryUsage 或使用 List Usages REST API 获取注册表当前对存储和其他资源的使用情况快照,并与该注册表的服务层限制相比较。 门户中注册表的“概述”页上也会显示存储使用量

当注册表接近限制时,使用情况信息可帮助你决定是否服务层。 此信息还可帮助你管理使用

注意

注册表的存储使用情况应该只能用作指导,可能不会反映最近的注册表操作。 监视注册表的 StorageUsed 指标以获取最新数据。

使用情况信息包含以下部分或全部内容以及该层的限制,具体取决于注册表的服务层:

1在异地复制的注册表中,会显示主区域的存储使用情况。 乘以使用的总存储量的复制数。

更改层级

可以通过 Azure CLI 或在 Azure 门户中更改注册表的服务层级。 你可以自由地在各种层级之间切换,只要你要切换到的层级具有所需的最大存储容量即可。

在服务层级之间移动时,不会出现注册表故障,也不会影响注册表操作。

Azure 命令行接口 (CLI)

若要使用 Azure CLI 在各种服务层级之间切换,请使用 az acr update 命令。 例如,若要切换到高级 SKU,请使用以下命令:

az acr update --name myContainerRegistry --sku Premium

Azure PowerShell

要使用 Azure PowerShell 在服务层级之间切换,请使用 Update-AzContainerRegistry cmdlet。 例如,若要切换到高级 SKU,请使用以下命令:

Update-AzContainerRegistry -ResourceGroupName myResourceGroup -Name myContainerRegistry -Sku Premium

Azure 门户

在 Azure 门户中的容器注册表“概述”中,选择“更新”,然后从“SKU”下拉列表中选择一个新 SKU

在 Azure 门户中更新容器注册表 SKU

定价

有关每个 Azure 容器注册表服务层级的定价信息,请参阅容器注册表定价

有关数据传输定价的详细信息,请参阅带宽定价详细信息

后续步骤

Azure 容器注册表路线图

请访问 GitHub 上的 ACR 路线图,了解服务即将推出的新功能。

Azure 容器注册表 UserVoice

请在 ACR UserVoice 中提交新功能建议,并对这些功能建议投票。