This article describes how to set up a zone-redundant container registry.
Zone redundancy is enabled by default for all Azure Container Registries in regions that support availability zones, making your resources more resilient automatically and at no additional cost. This enhancement applies to all SKUs including Basic and Standard and has been rolled out to both new and existing registries in supported regions.
Important
The Azure portal and CLI may not yet reflect the zone redundancy update accurately. The zoneRedundancy
property in your registry’s configuration might still show as false even though zone redundancy is active for all registries in supported regions. We’re actively updating the portal and API surfaces to reflect this default behavior more transparently. All previously enabled features will continue to function as expected.
For more information about availability zone support requirements and features, as well as multi-region deployment options, see Reliability in Azure Container Registry.
Prerequisites
Create a zone-redundant registry
To create a zone-redundant registry in the Premium service tier, use Azure portal, Azure CLI, or a Bicep file.
Sign in to the Azure portal.
Select Create a resource > Containers > Container Registry.
In the Basics tab, select or create a resource group, and enter a unique registry name.
In Location, select a region that supports availability zones, such as East US.
In SKU, select Premium.
In Availability zones, select Enabled.
Optionally, configure more registry settings, and then select Review + create.
Select Create to deploy the registry instance.
Make sure that you have Azure CLI version 2.17.0 or later, or Azure Cloud Shell. If you need to install or upgrade, see Install Azure CLI.
If you don't have a resource group in a region that supports availability zones, run az group create to create a resource group (replace <resource-group-name>
and <location>
with your values):
az group create --name <resource-group-name> --location <location>
Select a region that supports availability zones, such as eastus.
Create a zone-enabled registry in the Premium service tier by running the az acr create command (replace <resource-group-name>
, <container-registry-name>
, and <region-name>
with your values):
az acr create \
--resource-group <resource-group-name> \
--name <container-registry-name> \
--location <region-name> \
--zone-redundancy enabled \
--sku Premium
In the command output, note the zoneRedundancy
property for the registry. When zoneRedundancy
is set to "Enabled"
, the registry is zone redundant:
{
[...]
"zoneRedundancy": "Enabled"
}
If you don't have a resource group in a region that supports availability zones, run az group create to create a resource group (replace <resource-group-name>
and <location>
with your values):
az group create --name <resource-group-name> --location <location>
To create a zone-redundant registry, copy the following Bicep file to a new file and save it using a filename such as registryZone.bicep
.
By default, the Bicep file enables zone redundancy in the registry.
@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
Run the following az deployment group create command to create the registry using the preceding template file (replace <resource-group-name>
and <registry-name>
with your values).
Note
If you deploy the template without parameters, it creates a unique name for you.
az deployment group create \
--resource-group <resource-group-name> \
--template-file registryZone.json \
--parameters containerRegistryName=<registry-name>