Containerizing Workloads: ACR, ACI, and Azure Container Apps
Compare Azure's container services — ACR, ACI, and ACA — and learn when to use each for secure image storage, isolated task execution, and scalable microservices.
# Containerizing Workloads: ACR, ACI, and Azure Container Apps
*This article is Part 1, Chapter 1.4 of the **AZ-204 Exam Refresher** series. We wrap up the compute domain by comparing Azure's three main container services: Container Registry for storing images, Container Instances for quick isolated runs, and Container Apps for scalable microservices.*
---
## Introduction
Containers are the shipping containers of software — pack your app and its dependencies into a standardized box, and it runs the same everywhere. Azure offers a layered set of services around containers, each solving a different problem.
The confusion for most developers is knowing which service to reach for:
- **ACR** = where you *store* images (like Docker Hub, but private and on Azure)
- **ACI** = where you *run* a container quickly, no cluster needed
- **ACA** = where you *deploy* scalable, production microservices with event-driven autoscaling
---
## Core Concepts
### Azure Container Registry (ACR)
ACR is a managed, private Docker registry. Instead of pushing to Docker Hub, you push to your own Azure-hosted registry with built-in geo-replication, vulnerability scanning, and RBAC integration.
```bash
# Create a registry
az acr create --resource-group myRG --name myRegistry --sku Standard
# Build and push directly from source (no local Docker needed)
az acr build --registry myRegistry --image myapp:v1 .
# Log in for local docker push
az acr login --name myRegistry
docker tag myapp:latest myreg