本文介绍如何设置区域冗余容器注册表。
默认情况下,为支持可用性区域的区域中的所有 Azure 容器注册表启用区域冗余,使资源能够自动复原,无需额外付费。 此产品功能增强适用于包括基本和标准在内的所有 SKU,且已在支持的区域中对新的和现有的注册表推送完成。
重要
Azure 门户和 CLI 可能尚未准确反映区域冗余更新。 即使在受支持的区域中,所有注册表都已启用区域冗余,注册表配置中的 zoneRedundancy 属性仍可能显示为 false。 我们正在积极更新门户和 API 接口,以更透明地反映这一默认行为。 所有以前启用的功能将继续按预期运行。
有关可用性区域支持要求和功能以及多区域部署选项的详细信息,请参阅 Azure 容器注册表中的可靠性。
Prerequisites
创建区域冗余注册表
若要在高级服务层中创建区域冗余注册表,请使用 Azure 门户、Azure CLI 或 Bicep 文件。
登录 Azure 门户。
选择创建资源>容器>容器注册表。
在“基本信息”选项卡中选择或创建一个资源组,然后输入唯一注册表名称。
在 “位置”中,选择 支持可用性区域的区域,例如 美国东部。
在“SKU”中选择“高级”。
在“可用性区域”中,选择“启用”。
(可选)配置更多注册表设置,然后选择“查看 + 创建“。
选择“创建”以部署注册表实例。
请确保具有 Azure CLI 2.17.0 或更高版本,或 Azure Cloud Shell。 如果需要进行安装或升级,请参阅安装 Azure CLI。
如果在支持可用性区域的区域中没有资源组,请运行 az group create 来创建资源组(将 <resource-group-name> 和 <location> 替换为你的值):
az group create --name <resource-group-name> --location <location>
选择 支持可用性区域的区域,例如 eastus。
通过运行 az acr create 命令(将 <resource-group-name>、<container-registry-name> 和 <region-name> 替换为你的值)在“高级”服务层中创建启用区域的注册表:
az acr create \
--resource-group <resource-group-name> \
--name <container-registry-name> \
--location <region-name> \
--zone-redundancy enabled \
--sku Premium
在命令输出中,记下注册表的 zoneRedundancy 属性。 如果 zoneRedundancy 设置为 "Enabled",注册表是区域冗余的:
{
[...]
"zoneRedundancy": "Enabled"
}
如果在支持可用性区域的区域中没有资源组,请运行 az group create 来创建资源组(将 <resource-group-name> 和 <location> 替换为你的值):
az group create --name <resource-group-name> --location <location>
若要创建区域冗余注册表,请将以下 Bicep 文件复制到新文件中,并使用文件名registryZone.bicep保存。
默认情况下,Bicep 文件在注册表中启用区域冗余。
@description('Globally unique name of your Azure Container Registry')
@minLength(5)
@maxLength(50)
param containerRegistryName string = 'acr${uniqueString(resourceGroup().id)}'
@description('Location for registry home replica.')
param location string = resourceGroup().location
@description('Enable admin user for registry. This is not recommended for production use.')
param adminUserEnabled bool = false
@description('Enable zone redundancy of registry\'s home replica. Requires the registry\'s region supports availability zones.')
@allowed([
'Enabled'
'Disabled'
])
param containerRegistryZoneRedundancy string = 'Enabled'
// Tier of your Azure Container Registry. Geo-replication and zone redundancy require Premium SKU.
var acrSku = 'Premium'
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2025-04-01' = {
name: containerRegistryName
location: location
sku: {
name: acrSku
}
properties: {
adminUserEnabled: adminUserEnabled
zoneRedundancy: containerRegistryZoneRedundancy
}
}
output containerRegistryLoginServer string = containerRegistry.properties.loginServer
运行以下 az deployment group create 命令,使用前面的模板文件创建注册表(请将 <resource-group-name> 和 <registry-name> 替换为您的值)。
Note
如果部署模板而不使用参数,它将为你创建唯一的名称。
az deployment group create \
--resource-group <resource-group-name> \
--template-file registryZone.json \
--parameters containerRegistryName=<registry-name>