默认情况下,为支持可用性区域的区域中的所有Azure容器注册表启用区域冗余,使资源能够自动复原,且无需额外付费。 此增强功能适用于所有 SKU,包括基本和标准,并且已推送到受支持区域中的新旧注册表。 对于使用异地复制的高级注册表,支持区域中的所有副本默认也是区域冗余的。
有关可用性区域支持要求和功能以及多区域部署选项的详细信息,请参阅 Azure Container Registry 中的可靠性。
重要
Azure门户和其他工具可能尚未准确反映区域冗余更新。
zoneRedundancy 注册表配置中的属性可能仍显示为 false,但在受支持区域中,所有注册表的区域冗余均已启用。 我们正在积极更新门户和 API 图面,以更透明地反映此默认行为。 所有以前启用的功能将继续按预期运行。
本文介绍如何在Azure Container Registry中创建区域冗余注册表和异地副本。
在 Azure Container Registry 中创建区域冗余注册表
若要在高级服务层中创建区域冗余注册表,请使用Azure门户、Azure CLI或Bicep文件。
登录到 Azure 门户。
选择“ 创建资源>容器>容器注册表”。
在“基本信息”选项卡中选择或创建一个资源组,然后输入唯一注册表名称。
在 “位置”中,选择 支持可用性区域的区域,例如 中国北部 3。
在“SKU”中选择“高级”。
在 “使用可用性区域”中,确保已选中 “已启用 ”。
(可选)配置更多注册表设置,然后选择“查看 + 创建“。
选择“创建”以部署注册表实例。
请确保具有最新版本的 Azure CLI。 如果需要安装或升级,请参阅 Install Azure CLI。
如果您没有一个位于支持可用性区域的地区中的资源组,请运行 az group create 来创建一个资源组(请将<resource-group-name>和<location>替换为您的值):
az group create --name <resource-group-name> --location <location>
选择 支持可用性区域的区域,例如 chinanorth3。
通过在高级服务层中运行 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",则注册表是区域冗余的。
如果您没有一个位于支持可用性区域的地区中的资源组,请运行 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>替换为你的值。
注释
如果部署模板而不使用参数,它将为你创建唯一的名称。
az deployment group create \
--resource-group <resource-group-name> \
--template-file registryZone.bicep \
--parameters containerRegistryName=<registry-name>
创建区域冗余异地副本
可以在与注册表的主区域分开的Azure区域中设置区域冗余副本。
地理复制在 Azure 容器注册表的高级层 中,将您的容器注册表内容复制到多个 Azure 区域。 如果您的高级版注册表使用异地复制,当副本预配在支持可用性区域的区域时,副本也将具有区域冗余特性。
按照以下步骤为使用高级服务层的容器注册表创建区域冗余副本。 如果您还没有这样的注册表,请按照 在 Azure 容器注册表中创建区域冗余注册表 中的步骤执行。
若要创建区域冗余副本,请使用Azure门户、Azure CLI或Bicep文件。
登录到 Azure 门户。
转到高级层容器注册表。 在服务菜单中的 “服务”下,选择 “异地复制”。
在显示的地图上,执行以下操作之一:
- 在支持可用性区域的区域中选择绿色六边形,例如 中国北部 3。
在“创建复制”窗口中,确认“位置”。
在 “使用可用性区域”中,选择“ 已启用”,然后选择“ 创建”。
请确保具有最新版本的 Azure CLI。 如果需要安装或升级,请参阅 Install Azure CLI。
通过运行az acr replication create,将<resource-group-name>、<container-registry-name>和<replica-region>替换为您自己的值,以创建区域冗余复制。
az acr replication create \
--location <region-name> \
--resource-group <resource-group-name> \
--registry <container-registry-name> \
--zone-redundancy enabled
在命令输出中,记下副本的 zoneRedundancy 属性。 如果 zoneRedundancy 设置为 "Enabled",则注册表是区域冗余的。
若要为现有注册表创建异地副本,请将以下Bicep模板复制到新文件,并使用文件名(如 replicaZone.bicep)将其保存。 默认情况下,模板为区域副本启用区域冗余。
@description('Globally unique name of your Azure Container Registry')
param containerRegistryName string
@description('Short name for registry replica location, such as chinanorth3.')
param replicaLocation string
@description('Enable zone redundancy of registry replica. Requires replica location to support availability zones.')
@allowed([
'Enabled'
'Disabled'
])
param replicaZoneRedundancy string = 'Enabled'
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2025-04-01' existing = {
name: containerRegistryName
}
resource containerRegistryReplica 'Microsoft.ContainerRegistry/registries/replications@2025-04-01' = {
parent: containerRegistry
name: replicaLocation
location: replicaLocation
properties: {
zoneRedundancy: replicaZoneRedundancy
}
}
运行 az deployment group create,使用保存的模板文件创建注册表、替换<resource-group-name><registry-name>和<replica-location>值。
az deployment group create \
--resource-group <resource-group-name> \
--template-file replicaZone.bicep \
--parameters containerRegistryName=<registry-name> replicaLocation=<replica-location>