Registro de Contêineres do Azure
Crie e envie imagens do Docker para um Registro de Contêineres privado do Azure, gerencie o acesso com atribuições de funções e automatize as compilações de imagens com as Tarefas do ACR.
Registro de Contêineres do Azure é uma aula grátis de Azure Fundamentals no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Azure Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Azure Fundamentals inclui 4 aulas no total.
O que é o Azure Container Registry?
O Azure Container Registry (ACR) é um serviço gerenciado e privado de registro do Docker, baseado no Docker Registry 2.0 de código aberto. Ele armazena e gerencia imagens de contêiner e artefatos relacionados (gráficos Helm e artefatos OCI) usados pelas suas implantações do Azure. O ACR integra-se nativamente ao Azure Kubernetes Service (AKS), ao Azure Container Instances (ACI) e ao App Service, permitindo extrair imagens sem gerenciar credenciais.
Camadas de serviço do ACR
O ACR oferece três camadas de serviço. A Basic é otimizada em termos de custo para aprendizado e desenvolvimento com baixa vazão, com 10 GB de armazenamento e suporte limitado a webhooks. A Standard adiciona recursos de replicação geográfica e maior vazão, sendo adequada para a maioria das cargas de trabalho de produção. A Premium inclui replicação geográfica, confiança de conteúdo, links privados, chaves gerenciadas pelo cliente e a maior largura de banda, sendo necessária para requisitos empresariais de segurança.
# 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 tableEnviando imagens para o ACR
Para enviar uma imagem do Docker para o ACR, autentique o cliente do Docker, marque sua imagem local com o nome do host do servidor de entrada do ACR e faça o envio. A URL do servidor de entrada do ACR segue o padrão <registryname>.azurecr.io. A autenticação usa suas credenciais do Azure AD por meio de az acr login (para uso interativo) ou uma senha de administrador do ACR ou uma entidade de serviço para pipelines automatizados.
# 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: compilações baseadas na nuvem
As ACR Tasks permitem compilar imagens do Docker na nuvem sem um daemon local do Docker. Uma tarefa rápida (az acr build) envia o contexto da compilação para o ACR e executa o Dockerfile remotamente, produzindo uma imagem armazenada diretamente no registro. Tarefas agendadas ou baseadas em gatilhos podem recompilar sua imagem automaticamente quando a imagem base é atualizada ou quando o código é confirmado no GitHub, permitindo um pipeline completo de CI de contêineres sem um agente de compilação separado.
# 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>Controle de acesso com RBAC
O ACR integra-se ao Azure RBAC para oferecer controle de acesso detalhado. As funções integradas do ACR incluem AcrPull (somente extrair imagens, para serviços de implantação), AcrPush (extrair e enviar, para pipelines de CI/CD) e AcrDelete (gerenciar marcas de imagens). Atribua a função AcrPull à identidade gerenciada do AKS ou do App Service para que os contêineres possam extrair imagens sem credenciais armazenadas em nenhum 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_IDReplicação geográfica para implantações globais
A replicação geográfica (camada Premium) replica seu registro para várias regiões do Azure. Quando o AKS ou o ACI em uma região extrai uma imagem, ele a lê da réplica mais próxima em vez de usar um registro remoto, reduzindo a latência e os custos de saída de dados. A replicação é transparente: a mesma URI de imagem funciona globalmente, e o ACR encaminha automaticamente as solicitações de extração para a réplica geograficamente mais próxima.
# 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 tableConfiança de conteúdo e assinatura de imagens
A confiança de conteúdo (camada Premium) usa o Docker Notary para garantir que somente imagens assinadas possam ser extraídas do registro. Quando a confiança de conteúdo está habilitada no ACR, as imagens não assinadas são rejeitadas. A assinatura é realizada no pipeline de CI usando o conjunto de ferramentas Docker Content Trust e um par de chaves confiável. Isso impede ataques à cadeia de suprimentos nos quais uma imagem maliciosa é enviada e implantada em produção.
# 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)Verificação de vulnerabilidades com o Defender
Habilite o Microsoft Defender for Containers para verificar automaticamente cada imagem enviada ao ACR em busca de vulnerabilidades conhecidas nas camadas do sistema operacional e da aplicação (CVEs). O Defender gera um relatório que lista as vulnerabilidades por gravidade (Crítica, Alta, Média e Baixa) e fornece orientações para correção. Você pode configurar políticas para bloquear a implantação de imagens com vulnerabilidades críticas em clusters do AKS por meio da integração com o 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 tablePonto de extremidade privado para o ACR
Para obter o máximo de segurança, desabilite o acesso à rede pública do ACR e conecte-se a ele exclusivamente por meio de um ponto de extremidade privado dentro da sua VNet. Isso garante que as imagens de contêiner nunca sejam transferidas pela internet pública: todas as extrações passam pela rede privada do Azure. Configure uma zona DNS privada (privatelink.azurecr.io) para resolver o nome do host do registro para o endereço IP privado dentro da sua 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 falseGerenciamento do ciclo de vida: removendo imagens antigas
Sem o gerenciamento do ciclo de vida, os registros de contêiner acumulam milhares de marcas de imagens antigas, consumindo armazenamento caro. Use tarefas de limpeza do ACR (uma tarefa de temporizador integrada) para excluir manifestos e marcas sem marcação mais antigos que um período especificado. Execute as limpezas conforme um agendamento usando az acr task create com o comando acr purge, direcionando repositórios específicos e mantendo um número mínimo de marcas recentes.
# 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/nullIntegração do ACR com o AKS
A maneira mais simples de conectar o AKS ao ACR é usar o comando az aks update --attach-acr, que concede automaticamente à identidade gerenciada do AKS a função AcrPull. Depois da conexão, as especificações de Pod do Kubernetes fazem referência às imagens usando apenas o nome de host completo do ACR — não é necessário usar imagePullSecrets, pois o AKS usa a identidade gerenciada para autenticação de forma transparente no nível do nó.
# 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.0Verificação rápida
Teste sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) apresentados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que o Azure Container Registry (ACR) é um registro privado gerenciado que armazena imagens do Docker; as tarefas do ACR permitem criar imagens na nuvem sem um daemon local do Docker; e as funções do RBAC (AcrPull, AcrPush) controlam o acesso dos serviços de implantação e dos pipelines de CI/CD. A seguir, exploraremos o Azure Container Instances.
Perguntas Frequentes
A aula “Registro de Contêineres do Azure” é grátis?
Sim — o texto completo de “Registro de Contêineres do Azure” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Azure Fundamentals, atualize para CoddyKit PRO. O curso de Azure Fundamentals inclui 4 aulas no total.
O que vou aprender em “Registro de Contêineres do Azure”?
Crie e envie imagens do Docker para um Registro de Contêineres privado do Azure, gerencie o acesso com atribuições de funções e automatize as compilações de imagens com as Tarefas do ACR. Você pratica Azure Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Azure Fundamentals?
Nenhuma experiência prévia é necessária. Azure Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Registro de Contêineres do Azure”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Azure Fundamentals?
Sim. Cada aula de Azure Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Registro de Contêineres do Azure
- Instâncias de Contêineres do Azure
- Conceitos de Kubernetes para o Azure
- Implantando Cargas de Trabalho no AKS