Containers: ACR, ACI & Container Apps
Not every workload needs a full VM. Containers are lightweight, fast, and perfect for microservices. Learn Azure Container Registry, Container Instances, and Container Apps β the three container services an Azure admin needs to know.
Containers vs VMs
If a VM is a house (full building with its own plumbing and electricity), a container is an apartment (shares the buildingβs infrastructure but has its own space).
Containers package your application with everything it needs to run β code, libraries, settings β but share the host operating system. They start in seconds (not minutes like VMs), use less resources, and are perfect for microservices.
Azure gives you three container services: Container Registry (stores your container images), Container Instances (run containers without managing servers), and Container Apps (run containers with auto-scaling and traffic management).
Azure Container Registry (ACR)
ACR is a private Docker container registry β a storage service for your container images.
| SKU | Features | Storage | Use Case |
|---|---|---|---|
| Basic | Core features, limited throughput | 10 GB | Dev/test, personal projects |
| Standard | Increased throughput and storage | 100 GB | Most production workloads |
| Premium | Geo-replication, private link, content trust | 500 GB | Enterprise, multi-region deployments |
Key operations:
az acr createβ create a registryaz acr buildβ build an image in the cloud (no local Docker needed)docker push myregistry.azurecr.io/myapp:v1β push an imagedocker pull myregistry.azurecr.io/myapp:v1β pull an image
Azure Container Instances (ACI)
ACI is the simplest way to run a container in Azure β no VMs, no orchestrator, no cluster management. Just run a container.
Key features:
- Starts in seconds
- Per-second billing
- Supports both Linux and Windows containers
- Container groups β multiple containers sharing resources (like a Kubernetes pod)
- Can mount Azure Files for persistent storage
Limitations: No auto-scaling, no built-in load balancing, no traffic splitting. For those, use Container Apps.
Azure Container Apps (ACA)
ACA is a managed container platform built on Kubernetes (but you donβt manage Kubernetes). It adds the features ACI lacks.
Key features:
- Auto-scaling β scale based on HTTP traffic, CPU, memory, or event-driven (KEDA)
- Scale to zero β no instances running = no compute cost
- Revision management β deploy new versions alongside old ones
- Traffic splitting β route percentage of traffic to different revisions (canary deployments)
- Built-in ingress β HTTPS endpoints without configuring a load balancer
| Feature | ACI (Container Instances) | ACA (Container Apps) |
|---|---|---|
| Best for | Simple tasks, batch jobs, testing | Web apps, APIs, microservices |
| Auto-scaling | No | Yes (HTTP, CPU, memory, events) |
| Scale to zero | No (minimum 1 instance) | Yes |
| Load balancing | No (manual) | Yes (built-in ingress) |
| Traffic splitting | No | Yes (canary deployments) |
| Pricing | Per-second (vCPU + memory) | Per-second + scale to zero |
Exam tip: ACI vs ACA decision
The exam loves asking when to use ACI vs ACA. Simple rule: ACI for simple, short-lived tasks (batch processing, build agents, quick scripts). ACA for web apps and APIs that need scaling, load balancing, and traffic management. If the question mentions βauto-scaleβ or βmicroservices,β itβs ACA.
Real-world: Meridian Financial's container architecture
Meridian Financial runs their customer-facing API on Azure Container Apps with:
- ACR Premium with geo-replication (UK South + UK West) for fast pulls in both regions
- 3 microservices as separate Container Apps, each auto-scaling independently
- Scale to zero enabled on the reporting service (only used during business hours)
- Traffic splitting β 90% to current revision, 10% to the new version for canary testing
- Revision mode: multiple β both old and new versions run simultaneously during deployments
Total monthly cost: ~60% less than their previous VM-based setup, with better scaling.
Knowledge check
CloudFirst Labs needs to deploy a web API that auto-scales based on HTTP traffic and can scale to zero when idle to save costs. Which service should they use?
TechCorp needs to run a nightly batch job that processes CSV files and exits when done. The job runs for about 10 minutes. Which container service is most appropriate?
π¬ Video coming soon