Azure Container Registry
Cree y envíe imágenes de Docker a un Azure Container Registry privado, administre el acceso mediante asignaciones de roles y automatice las compilaciones de imágenes con ACR Tasks.
Azure Container Registry es una lección gratuita de Azure Fundamentals en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Azure Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Azure Fundamentals incluye 4 lecciones en total.
¿Qué es Azure Container Registry?
Azure Container Registry (ACR) es un servicio administrado de registro privado de Docker basado en el proyecto de código abierto Docker Registry 2.0. Almacena y administra imágenes de contenedor y artefactos relacionados (gráficos de Helm y artefactos OCI) que utilizan las implementaciones de Azure. ACR se integra de forma nativa con Azure Kubernetes Service (AKS), Azure Container Instances (ACI) y App Service, lo que permite extraer imágenes sin problemas y sin administrar credenciales.
Niveles de servicio de ACR
ACR ofrece tres niveles de servicio. Basic está optimizado en costes para el aprendizaje y el desarrollo con poco rendimiento, con 10 GB de almacenamiento y compatibilidad limitada con webhooks. Standard agrega capacidades de replicación geográfica y mayor rendimiento, por lo que resulta adecuado para la mayoría de las cargas de trabajo de producción. Premium incluye replicación geográfica, confianza de contenido, vínculos privados, claves administradas por el cliente y el mayor ancho de banda; es necesario para requisitos de seguridad empresariales.
# Create a Premium ACR in East US
az acr create \
--name mycontainerregistry \
--resource-group MyRG \
--location eastus \
--sku Premium
# List ACR instances in the subscription
az acr list --query '[].{name:name, sku:sku.name, loginServer:loginServer}' -o tableInserción de imágenes en ACR
Para insertar una imagen de Docker en ACR, autentique el cliente de Docker, etiquete la imagen local con el nombre de host del servidor de inicio de sesión de ACR y, después, insértela. La URL del servidor de inicio de sesión de ACR sigue el patrón <registryname>.azurecr.io. La autenticación utiliza sus credenciales de Azure AD mediante az acr login (para uso interactivo) o una contraseña de administrador de ACR o una entidad de servicio para canalizaciones automatizadas.
# Authenticate to ACR
az acr login --name mycontainerregistry
# Tag a local image for ACR
docker tag myapp:latest mycontainerregistry.azurecr.io/myapp:v1.0
# Push the image
docker push mycontainerregistry.azurecr.io/myapp:v1.0
# List images in the registry
az acr repository list --name mycontainerregistry -o table
az acr repository show-tags --name mycontainerregistry --repository myappACR Tasks: compilaciones basadas en la nube
ACR Tasks permite compilar imágenes de Docker en la nube sin un daemon local de Docker. Una tarea rápida (az acr build) envía el contexto de compilación a ACR y ejecuta el Dockerfile de forma remota, generando una imagen que se almacena directamente en el registro. Las tareas programadas o basadas en desencadenadores pueden recompilar automáticamente la imagen cuando se actualiza la imagen base o cuando se confirma código en GitHub, lo que permite disponer de una canalización completa de CI para contenedores sin un agente de compilación independiente.
# Quick task: build and push without local Docker
az acr build \
--registry mycontainerregistry \
--image myapp:v1.0 \
. # build context (current directory with Dockerfile)
# Define a multi-step ACR Task triggered on commit
az acr task create \
--name buildAndTest \
--registry mycontainerregistry \
--context https://github.com/myorg/myrepo.git \
--file acr-task.yaml \
--git-access-token <GITHUB_PAT>Control de acceso con RBAC
ACR se integra con Azure RBAC para proporcionar un control de acceso detallado. Los roles integrados de ACR incluyen AcrPull (solo extraer imágenes, para servicios de implementación), AcrPush (extraer e insertar, para canalizaciones de CI/CD) y AcrDelete (administrar etiquetas de imagen). Asigne el rol AcrPull a la identidad administrada de AKS o App Service para que los contenedores puedan extraer imágenes sin almacenar credenciales en ningún lugar.
# Grant AKS cluster's managed identity the AcrPull role
ACR_ID=$(az acr show --name mycontainerregistry --resource-group MyRG --query id -o tsv)
AKS_IDENTITY=$(az aks show --name myAKSCluster --resource-group MyRG \
--query identityProfile.kubeletidentity.objectId -o tsv)
az role assignment create \
--assignee $AKS_IDENTITY \
--role AcrPull \
--scope $ACR_IDReplicación geográfica para implementaciones globales
La replicación geográfica (nivel Premium) replica el registro en varias regiones de Azure. Cuando AKS o ACI de una región extrae una imagen, la obtiene de la réplica más cercana en lugar de un registro remoto, lo que reduce la latencia y los costes de salida de datos. La replicación es transparente: la misma URI de imagen funciona globalmente y ACR dirige automáticamente las solicitudes de extracción a la réplica geográficamente más cercana.
# Add a geo-replication to West Europe
az acr replication create \
--name westeurope \
--registry mycontainerregistry \
--location westeurope
# List all replicas
az acr replication list \
--registry mycontainerregistry \
--query '[].{name:name, location:location, status:provisioningState}' -o tableConfianza de contenido y firma de imágenes
La confianza de contenido (nivel Premium) utiliza Docker Notary para garantizar que solo se puedan extraer imágenes firmadas del registro. Cuando la confianza de contenido está habilitada en ACR, las imágenes sin firmar se rechazan. La firma se realiza en la canalización de CI mediante la cadena de herramientas Docker Content Trust y un par de claves de confianza. Esto evita ataques a la cadena de suministro en los que una imagen maliciosa se inserta y se implementa en producción.
# Enable content trust on the registry
az acr config content-trust update \
--registry mycontainerregistry \
--status enabled
# Sign an image when pushing (DOCKER_CONTENT_TRUST env var)
# export DOCKER_CONTENT_TRUST=1
# docker push mycontainerregistry.azurecr.io/myapp:v1.0
# (Docker prompts for signing key passphrase)Análisis de vulnerabilidades con Defender
Habilite Microsoft Defender for Containers para analizar automáticamente cada imagen insertada en ACR en busca de vulnerabilidades conocidas del sistema operativo y de la capa de aplicación (CVE). Defender genera un informe que enumera las vulnerabilidades por gravedad (Crítica, Alta, Media y Baja) y proporciona orientación para su corrección. Puede configurar directivas para bloquear la implementación de imágenes con vulnerabilidades críticas en clústeres de AKS mediante la integración con Azure Policy.
# Enable Defender for Containers on the subscription
az security pricing create \
--name Containers \
--tier Standard
# View vulnerability assessment results
az security assessment list \
--query "[?contains(displayName, 'Container')].{name:displayName, status:status.code}" \
-o tablePunto de conexión privado para ACR
Para obtener la máxima seguridad, deshabilite el acceso de red público de ACR y conéctese exclusivamente mediante un punto de conexión privado dentro de su VNet. Así se garantiza que las imágenes de contenedor nunca se transfieran por Internet público: todas las extracciones pasan por la red troncal privada de Azure. Configure una zona DNS privada (privatelink.azurecr.io) para resolver el nombre de host del registro en la dirección IP privada dentro de su VNet.
# Create a private endpoint for ACR
az network private-endpoint create \
--name acr-private-endpoint \
--resource-group MyRG \
--vnet-name MyVNet \
--subnet PrivateEndpointSubnet \
--private-connection-resource-id \
$(az acr show --name mycontainerregistry --query id -o tsv) \
--group-id registry \
--connection-name acrConnection
# Disable public access
az acr update \
--name mycontainerregistry \
--public-network-enabled falseAdministración del ciclo de vida: eliminación de imágenes antiguas
Sin una administración del ciclo de vida, los registros de contenedores acumulan miles de etiquetas de imágenes antiguas que consumen un almacenamiento costoso. Use tareas de ACR purge (una tarea de temporizador integrada) para eliminar manifiestos y etiquetas sin etiquetar que superen una antigüedad determinada. Ejecute las eliminaciones según una programación mediante az acr task create con el comando acr purge, dirigiéndolas a repositorios específicos y conservando un número mínimo de etiquetas recientes.
# Create a scheduled purge task: delete tags older than 30d
az acr task create \
--name scheduledPurge \
--registry mycontainerregistry \
--cmd 'acr purge --filter myapp:.* --ago 30d --keep 5 --untagged' \
--schedule '0 1 * * *' \
--context /dev/nullIntegración de ACR con AKS
La forma más sencilla de conectar AKS con ACR es usar el comando az aks update --attach-acr, que concede automáticamente a la identidad administrada de AKS el rol AcrPull. Después de asociarlo, las especificaciones de los pods de Kubernetes hacen referencia a las imágenes usando únicamente el nombre de host completo de ACR; no se requieren imagePullSecrets porque AKS usa la identidad administrada para autenticarse de forma transparente en el nivel del nodo.
# Attach ACR to an existing AKS cluster
az aks update \
--name myAKSCluster \
--resource-group MyRG \
--attach-acr mycontainerregistry
# Now pods can use ACR images without imagePullSecrets
# Example pod spec:
# spec:
# containers:
# - name: myapp
# image: mycontainerregistry.azurecr.io/myapp:v1.0Comprobación rápida
Compruebe su comprensión de los conceptos de Microsoft Azure Fundamentals (AZ-900) de esta lección.
Resumen de la lección
En esta lección ha aprendido que Azure Container Registry (ACR) es un registro privado administrado que almacena imágenes de Docker; ACR Tasks permite compilar imágenes en la nube sin un daemon de Docker local; y los roles de RBAC (AcrPull, AcrPush) controlan el acceso de los servicios de implementación y las canalizaciones de CI/CD. A continuación exploraremos Azure Container Instances.
Preguntas frecuentes
¿La lección «Azure Container Registry» es gratis?
Sí — el texto completo de «Azure Container Registry» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Azure Fundamentals, actualiza a CoddyKit PRO. El curso de Azure Fundamentals incluye 4 lecciones en total.
¿Qué aprenderé en «Azure Container Registry»?
Cree y envíe imágenes de Docker a un Azure Container Registry privado, administre el acceso mediante asignaciones de roles y automatice las compilaciones de imágenes con ACR Tasks. Practicas Azure Fundamentals con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Azure Fundamentals?
No se requiere experiencia previa. Azure Fundamentals en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Azure Container Registry»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Azure Fundamentals?
Sí. Cada lección de Azure Fundamentals incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Azure Container Registry
- Azure Container Instances
- Conceptos de Kubernetes para Azure
- Implementación de cargas de trabajo en AKS