Azure 容器注册表服务层级

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

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

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

例如:

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

服务层级功能和限制

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

资源 基本 标准 Premium
包括的存储1 (GiB) 10 100 500
存储限制 (TiB) 40 40 40
最大映像层大小 (GiB) 200 200 200
最大清单大小 (MiB) 4 4 4
每分钟读取操作数2、3 1,000 3,000 10,000
每分钟写入操作数2、4 100 500 2,000
下载带宽2 (Mbps) 30 60 100
上传带宽2 (Mbps) 10 20 50
Webhook 2 10 500
异地复制 空值 空值 支持
可用性区域 空值 空值 支持
内容信任 空值 空值 支持
具有专用终结点的专用链接 空值 空值 支持
• 专用终结点数 不可用 不可用 200
公共 IP 网络规则 空值 空值 100
• 虚拟网络规则 空值 空值 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/readmetadata/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 容器注册表 UserVoice

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