Gerenciar conteúdo público com o Registro de Contêiner do Azure

Este artigo é uma visão geral das práticas e fluxos de trabalho para usar um registro local, como um registro de contêiner do Azure, para manter cópias de conteúdo público, como imagens de contêiner no Docker Hub.

Riscos com conteúdo público

Seu ambiente pode ter dependências de conteúdo público, como imagens de contêiner público, gráficos de leme, políticas de OPA (Open Policy Agent ) ou outros artefatos. Por exemplo, você pode executar nginx para roteamento de serviço ou docker build FROM alpine extraindo imagens diretamente do Docker Hub ou de outro registro público.

Sem controles adequados, ter dependências no conteúdo do Registro público pode introduzir riscos aos fluxos de trabalho de desenvolvimento e implantação de imagens. Para reduzir os riscos, mantenha cópias locais do conteúdo público sempre que possível. Para obter detalhes, consulte o blog Open Container Initiative.

Autenticar com o Docker Hub

Como primeira etapa, se você atualmente extrair imagens públicas do Docker Hub como parte de um fluxo de trabalho de compilação ou implantação, recomendamos que você se autentique usando uma conta do Docker Hub em vez de fazer uma solicitação pull anônima.

Ao fazer solicitações pull anônimas frequentes, você pode ver erros do Docker semelhantes ou ERROR: toomanyrequests: Too Many Requests. You have reached your pull rate limit. Autenticar no Docker Hub para evitar esses erros.

Nota

A partir de 2 de novembro de 2020, os limites de taxa de download aplicam-se a solicitações anônimas e autenticadas para o Docker Hub a partir de contas do Docker Free Plan e são aplicados pelo endereço IP e ID do Docker, respectivamente.

Ao estimar seu número de solicitações pull, leve em consideração que, ao usar serviços de provedor de nuvem ou trabalhar atrás de um NAT corporativo, vários usuários serão apresentados ao Docker Hub de forma agregada como um subconjunto de endereços IP. Adicionar a autenticação de conta paga do Docker às solicitações feitas ao Docker Hub evitará possíveis interrupções do serviço devido à limitação do limite de taxa.

Para obter detalhes, consulte Preços e assinaturas do Docker e Termos de Serviço do Docker.

Token de acesso do Docker Hub

O Docker Hub oferece suporte a tokens de acesso pessoal como alternativas a uma senha do Docker ao se autenticar no Docker Hub. Os tokens são recomendados para serviços automatizados que extraem imagens do Docker Hub. Você pode gerar vários tokens para diferentes usuários ou serviços e revogar tokens quando não forem mais necessários.

Para autenticar usando docker login um token, omita a senha na linha de comando. Quando for solicitada uma senha, digite o token. Se você habilitou a autenticação de dois fatores para sua conta do Docker Hub, deverá usar um token de acesso pessoal ao efetuar login a partir da CLI do Docker.

Autenticar a partir dos serviços do Azure

Vários serviços do Azure, incluindo o Serviço de Aplicativo e as Instâncias de Contêiner do Azure, oferecem suporte à extração de imagens de registros públicos, como o Docker Hub, para implantações de contêiner. Se você precisar implantar uma imagem do Docker Hub, recomendamos que você defina as configurações para autenticar usando uma conta do Docker Hub. Exemplos:

Serviço de Aplicações

  • Fonte da imagem: Docker Hub
  • Acesso ao repositório: Privado
  • Login: <Nome de usuário do Docker Hub>
  • Senha: <token do Docker Hub>

Para obter detalhes, consulte Pulls autenticados do Docker Hub no Serviço de Aplicativo.

Azure Container Instances

  • Fonte da imagem: Docker Hub ou outro registro
  • Tipo de imagem: Private
  • Servidor de login do registro de imagem: docker.io
  • Nome de usuário do registro de imagem: <nome de usuário do Docker Hub>
  • Senha do registro da imagem: <token do Docker Hub>
  • Imagem: docker.io/< nome do> repo:<tag>

Configurar o Cache de Artefatos para consumir conteúdo público

A prática recomendada para consumir conteúdo público é combinar a autenticação do Registro e o recurso Cache de Artefatos. Você pode usar o Cache de Artefatos para armazenar em cache seus artefatos de contêiner em seu Registro de Contêiner do Azure, mesmo em redes privadas. Usar o Cache de Artefatos não apenas protege você dos limites de taxa do Registro, mas aumenta drasticamente a confiabilidade de pull quando combinado com ACR replicado geograficamente para extrair artefatos de qualquer região mais próxima do seu recurso do Azure. Além disso, você também pode usar todos os recursos de segurança que o ACR tem a oferecer, incluindo redes privadas, configuração de firewall, Entidades de Serviço e muito mais. Para obter informações completas sobre como usar conteúdo público com o ACR Artifact Cache, confira o tutorial Artifact Cache .

Importar imagens para um registro de contêiner do Azure

Para começar a gerenciar cópias de imagens públicas, você pode criar um registro de contêiner do Azure se ainda não tiver um. Crie um registro usando a CLI do Azure, o portal do Azure, o Azure PowerShell ou outras ferramentas.

Como uma etapa única recomendada, importe imagens base e outro conteúdo público para o registro de contêiner do Azure. O comando az acr import na CLI do Azure dá suporte à importação de imagens de registros públicos, como o Docker Hub e o Microsoft Container Registry, e de outros registros de contêiner privados.

az acr import não requer uma instalação local do Docker. Você pode executá-lo com uma instalação local da CLI do Azure ou diretamente no Azure Cloud Shell. Ele suporta imagens de qualquer tipo de sistema operacional, imagens de várias arquiteturas ou artefatos OCI, como gráficos Helm.

Dependendo das necessidades da sua organização, você pode importar para um registro dedicado ou um repositório em um registro compartilhado.

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

Atualizar referências de imagem

Os desenvolvedores de imagens de aplicativos devem garantir que seu código faça referência ao conteúdo local sob seu controle.

  • Atualize as referências de imagem para usar o registro privado. Por exemplo, atualize uma FROM baseimage:v1 instrução em um Dockerfile para FROM myregistry.azurecr.io/mybaseimage:v1
  • Configure credenciais ou um mecanismo de autenticação para usar o registro privado. O mecanismo exato depende das ferramentas que você usa para acessar o registro e como você gerencia o acesso do usuário.
    • Se você usar um cluster Kubernetes ou o Serviço Kubernetes do Azure para acessar o Registro, consulte os cenários de autenticação.
    • Saiba mais sobre as opções para autenticar com um registro de contêiner do Azure.

Automatize as atualizações de imagens de aplicativos

Expandindo a importação de imagens, configure uma tarefa do Registro de Contêiner do Azure para automatizar compilações de imagens de aplicativos quando as imagens base forem atualizadas. Uma tarefa de compilação automatizada pode rastrear atualizações de imagem base e atualizações de código-fonte.

Para obter um exemplo detalhado, consulte Como consumir e manter conteúdo público com as Tarefas do Registro de Contêiner do Azure.

Nota

Uma única tarefa pré-configurada pode reconstruir automaticamente cada imagem de aplicativo que faz referência a uma imagem base dependente.

Próximos passos

  • Saiba mais sobre as Tarefas ACR para criar, executar, enviar por push e corrigir imagens de contêiner no Azure.
  • Consulte Como consumir e manter conteúdo público com as Tarefas do Registro de Contêiner do Azure para obter um fluxo de trabalho de seleção automatizado para atualizar as imagens base para seu ambiente.
  • Consulte os tutoriais de Tarefas ACR para obter mais exemplos de como automatizar compilações e atualizações de imagens.