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.
| Dimension | Unit | What's being charged |
|---|---|---|
| Basic tier | per day | 10 GB included storage. Right for dev/test. $0.167/day ≈ $5.08/month |
| Standard tier | per day | 100 GB included storage. Production default. $0.667/day ≈ $20.30/month |
| Premium tier | per day | 500 GB included storage, geo-replication, content trust, private endpoints. $1.667/day ≈ $50.74/month |
| Storage overage | per GB-month | Storage beyond included allotment. $0.10/GB-month |
| Geo-replication (Premium) | per region per day | Each replica region adds the full per-day rate. $1.667/region/day |
| ACR Tasks (build runner) | per CPU-second | Image 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 reducedIf 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-PremiumPremium 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 avoidedWithout 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 costSmaller 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 dependentACR 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
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.