Skip to content
AzureAzure Container RegistryContainers

azurerm_container_registry cost estimation

A managed Docker container registry. Three tiers (Basic, Standard, Premium) with different per-day rates and included storage.

An azurerm_container_registry is a managed Docker registry. Unlike AWS ECR which charges per-GB, Azure Container Registry charges a fixed per-day rate that includes a storage allotment.

Three tiers:

Basic: $0.167/day ($5.08/month). Includes 10 GB storage. Right for dev/test or small workloads. Limited to 2 simultaneous pulls per second.

Standard: $0.667/day ($20.30/month). Includes 100 GB storage. Right for production. 10 simultaneous pulls/sec, higher push/pull throughput.

Premium: $1.667/day ($50.74/month). Includes 500 GB storage. Right for large enterprises. Geo-replication (only available on Premium), content trust, private endpoints, customer-managed keys.

Storage beyond the included allotment: $0.10/GB-month extra.

Geo-replication (Premium only): adds the full per-day rate per replica region. A Premium registry replicated to 3 regions costs $50.74 × 4 = ~$203/month.

Build minutes (ACR Tasks): build operations cost $0.0001/CPU-second for standard runners, $0.0003/CPU-second for GPU runners. Most modern image builds use a few hundred CPU-seconds, costing pennies per build.

Compared to ECR: ECR is purely per-GB plus egress. ACR is a fixed daily rate plus overage. For small registries, ACR Basic is cheaper than ECR. For large registries, ECR's per-GB model can be cheaper than ACR Premium.

c3x reads the SKU (Basic/Standard/Premium) and georeplications. Storage above the included allotment uses c3x-usage.yml for the actual size.

Terraform example

A minimal but realistic configuration that C3X can estimate.

resource "azurerm_container_registry" "main" {
  name                = "productionregistry"
  resource_group_name = azurerm_resource_group.main.name
  location            = "eastus"
  sku                 = "Standard"
  admin_enabled       = false

  identity {
    type = "SystemAssigned"
  }

  retention_policy_in_days = 7
}

Pricing dimensions

What you actually pay for when you provision azurerm_container_registry.

DimensionUnitWhat's being charged
Basic tierper day10 GB included storage. Right for dev/test.
$0.167/day ≈ $5.08/month
Standard tierper day100 GB included storage. Production default.
$0.667/day ≈ $20.30/month
Premium tierper day500 GB included storage, geo-replication, content trust, private endpoints.
$1.667/day ≈ $50.74/month
Storage overageper GB-monthStorage beyond included allotment.
$0.10/GB-month
Geo-replication (Premium)per region per dayEach replica region adds the full per-day rate.
$1.667/region/day
ACR Tasks (build runner)per CPU-secondImage build operations. Standard runner $0.0001/CPU-sec; GPU $0.0003/CPU-sec.

Optimization tips

Common ways to reduce azurerm_container_registry cost without changing the workload.

Pick the right tier for actual storage

Up to $15/month per tier reduced

If you use <10 GB total, Basic ($5/month) is cheaper than Standard ($20/month). For most teams with active CI, Standard's 100 GB allotment covers years of image history.

Skip Premium unless you need geo-replication

$30/month per non-Premium

Premium is 2.5x Standard's cost. Only justified if you need geo-replication, customer-managed keys, private endpoints, or content trust.

Set retention policies to expire old images

Storage overage avoided

Without retention, every CI build accumulates images forever. Setting retention_policy_in_days = 7 (Premium only feature) automatically deletes old untagged manifests.

Use multi-stage Dockerfiles

Storage cost

Smaller images mean less storage and faster pulls. Multi-stage builds drop dev dependencies and shrink images by 50-80%.

Build outside ACR for low-volume workloads

Build-volume dependent

ACR Tasks is convenient but builds on a self-hosted GitHub Actions runner or Azure DevOps agent can be cheaper for small teams already paying for those minutes.

FAQ

ACR or self-hosted Docker Registry?

ACR is right for any team running Azure workloads: integration with AKS, Azure DevOps, managed identities. Self-hosted Docker Registry on a VM can be cheaper but adds operational burden (TLS, auth, storage management, replication). Most teams find ACR worth the per-month cost.

How does c3x include geo-replication?

c3x reads the georeplications block on the resource and multiplies the Premium per-day rate by (1 + number of replica regions). The primary region is included in the base rate; each replica adds the full rate.

Does ACR pricing include bandwidth?

Pulls and pushes to/from within the same Azure region are free. Cross-region or internet bandwidth incurs standard Azure egress charges, separate from ACR.

What about ACR Tasks Quick Build?

ACR Quick Build (a one-off build via az acr build) bills the same as Tasks: per CPU-second. Convenient but watch volume; running quick builds in CI can add up.

Related resources

More Azure resources

Further reading

Estimate this resource in your own Terraform

Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including azurerm_container_registry.