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/delete
、content/read
、content/write
、metadata/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 容器注册表服务层级的定价信息,请参阅容器注册表定价。
有关数据传输定价的详细信息,请参阅带宽定价详细信息。
后续步骤
Azure 容器注册表 UserVoice
请在 ACR UserVoice 中提交新功能建议,并对这些功能建议投票。