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

Este artigo é uma visão geral de 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 Helm, políticas de Open Policy Agent (OPA) ou outros artefatos. Por exemplo, você pode executar nginx para roteamento de serviço ou docker build FROM alpine puxando imagens diretamente do Docker Hub ou outro registro público.

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

Autenticar com o Docker Hub

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

Ao fazer solicitações de pull anônimas frequentes, você poderá ver erros de Docker semelhantes a ERROR: toomanyrequests: Too Many Requests. ou You have reached your pull rate limit.. Faça a autenticação no Docker Hub para evitar esses erros.

Observação

Desde 2 de novembro de 2020, limites de taxa de download se aplicam a solicitações anônimas e autenticadas para o Docker Hub de contas do Plano Gratuito do Docker e são impostas por endereço IP e ID do Docker, respectivamente.

Ao estimar o número de solicitações pull, leve em conta que ao usar os serviços do provedor de nuvem ou trabalhando atrás de um NAT corporativo, vários usuários serão apresentados ao Docker Hub em agregação 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 de serviço devido à limitação de limite de taxa.

Para obter detalhes, veja preços e assinaturas do Docker e os Termos de serviço do Docker.

Token de acesso do Docker Hub

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

Para autenticar com docker login usando um token, omita a senha na linha de comando. Quando for solicitado a inserir uma senha, insira o token. Se você habilitar a autenticação de dois fatores para sua conta Docker Hub, deverá usar um token de acesso pessoal ao fazer logon na CLI do Docker.

Autenticar a partir dos serviços do Azure

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

Serviço de Aplicativo

  • Origem da imagem: Docker Hub
  • Acesso ao repositório: Privado
  • Logon: <nome de usuário do Docker Hub>
  • Senha: <token do Docker Hub>

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

Instâncias de Contêiner do Azure

  • Origem da imagem: Docker Hub ou outro registro
  • Tipo de imagem: Privado
  • Servidor de logon do registro da imagem: docker.io
  • Nome de usuário do registro de imagem: <nome de usuário do Docker Hub>
  • Senha do registro de imagem: <token do Docker Hub>
  • Imagem: docker.io/<nome do repositório>:<marca>

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

A melhor prática para consumir conteúdo público é combinar autenticação de registro e o recurso de Cache de Artefatos. Você pode usar o Cache de Artefatos para armazenar em cache os artefatos do seu contêiner no seu Registro de Contêiner do Azure, mesmo em redes privadas. Usar o Cache de Artefatos não apenas o protege dos limites de taxa do registro, mas também aumenta drasticamente a confiabilidade do pull ao ser combinado com o ACR Replicado Geograficamente para buscar artefatos na 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 o uso de conteúdo público com o Cache de Artefatos do ACR, consulte o tutorial Cache de Artefatos.

Importar imagens a um registro de contêiner do Azure

Para começar a gerenciar cópias de imagens públicas, você poderá criar um registro de contêiner do Azure se ainda não tiver um. Crie um registro usando a CLI do Azure, portal do Azure, Azure PowerShellou 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 azr acr Import na CLI do Azure dá suporte à importação de imagem de registros públicos, como o Docker Hub e o Microsoft Container Registry e de outros registros de contêineres 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 dá suporte a imagens de qualquer tipo de sistema operacional, imagens de várias arquiteturas ou artefatos de 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 instrução FROM baseimage:v1 em um Dockerfile para FROM myregistry.azurecr.io/mybaseimage:v1
  • Configure as 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 de como você gerencia o acesso do usuário.

Automatizar atualizações de imagem de aplicativo

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

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

Observação

Uma única tarefa pré-configurada pode recriar automaticamente todas as imagens do aplicativo que fazem referência a uma imagem base dependente.

Próximas etapas