Submit feedback on
Overprovisioned or Idle Azure Container Registry Tier
We've received your feedback.
Thanks for reaching out!
Oops! Something went wrong while submitting the form.
Close
Overprovisioned or Idle Azure Container Registry Tier
naga bhanu kiran kota
CER:

CER-0329

Service Category
Other
Cloud Provider
Azure
Service Name
AWS ECR
Inefficiency Type
Overprovisioned Resource
Explanation

Azure Container Registry charges a fixed daily fee based on the selected tier — Basic, Standard, or Premium — regardless of whether the registry is actively used. This means a registry with zero image pulls, zero pushes, and no active workloads consuming it still incurs the same daily charge as a heavily utilized one. Teams commonly provision Standard or Premium tiers as a default "production-safe" choice without evaluating whether the advanced capabilities exclusive to those tiers — such as geo-replication, private endpoints, content trust, or zone redundancy — are actually needed. The result is a persistent overspend on tier fees that deliver no incremental value.

This waste pattern is especially prevalent in organizations with decentralized container workflows. Registries created for short-lived projects, development and testing environments, or CI/CD pipelines are frequently left running long after their purpose has ended. Because Azure Container Registry has no free tier and cannot be paused or stopped — deletion is the only way to cease billing — these forgotten registries quietly accumulate fixed charges indefinitely. Across an organization with dozens of registries spread across teams and environments, the compounding effect of idle or over-tiered registries can represent a meaningful and entirely avoidable cost.

Relevant Billing Model

Azure Container Registry billing is driven by a fixed daily charge that varies by tier (SKU). The three available tiers are Basic, Standard, and Premium, with each tier commanding a progressively higher daily rate. Current rates are published on the Azure Container Registry pricing page.

  • The daily tier charge is incurred continuously as long as the registry exists, regardless of image pull/push activity, number of stored images, or whether tier-specific features are in use.
  • Each tier includes a set amount of storage (Basic: 10 GB, Standard: 100 GB, Premium: 500 GB). Storage beyond the included amount is billed at an additional daily rate per GiB.
  • Network egress charges apply separately for data transferred between Azure regions or out of Azure, following standard Azure networking fees.
  • Geo-replication, available only in the Premium tier, incurs the Premium daily rate for each replicated region — effectively multiplying the fixed tier charge across all replica locations.

Because the fixed daily charge is the dominant cost component for most registries, selecting a higher tier than necessary or leaving idle registries provisioned directly translates into waste.

Detection
  • Identify all container registries across the organization and review their current tier (Basic, Standard, or Premium) alongside monthly spend per registry.
  • Review registry activity over a representative period to identify registries with zero or near-zero image pull and push operations, indicating idle or abandoned registries.
  • Assess whether registries on the Premium tier are actively utilizing Premium-exclusive features such as geo-replication, private endpoints, content trust, or zone redundancy — if none of these features are configured, the tier may be oversized.
  • Evaluate whether registries on the Standard tier require the additional storage or throughput over Basic, or whether the Basic tier would suffice for the workload.
  • Identify registries associated with decommissioned projects, retired environments, or completed CI/CD pipelines that no longer serve an active purpose.
  • Review whether multiple registries exist across teams or projects that could be consolidated into a shared registry using repository namespaces.
Remediation
  • Downgrade registries to the lowest tier that meets actual requirements — most development workloads and single-region production scenarios operate effectively on Basic or Standard. Before downgrading from Premium, remove any geo-replications, connected registries, or private endpoints, as these must be deleted before the SKU change can be applied.
  • Delete idle registries that are no longer serving active workloads. Since registries cannot be paused or stopped, deletion is the only way to cease tier charges. Migrate any needed images to a shared organizational registry before decommissioning.
  • Consolidate registries across teams and projects into a shared registry using repository namespace conventions and repository-scoped access controls, eliminating redundant fixed tier charges across the organization.
  • Establish a periodic audit process to flag registries with minimal activity or unused Premium features, ensuring tier selections remain aligned with actual usage over time.
  • Implement automated image cleanup policies to manage storage growth within registries, preventing unnecessary overage charges from stale or untagged images accumulating over time.
Submit Feedback