Este documento apresenta os principais conceitos relacionados a imagens de contêiner, incluindo registros, repositórios e artefatos. Algumas informações básicas sobre como esses conceitos se aplicam ao Artifact Registry e ao Container Registry também estão incluídas.
Os exemplos do Artifact Registry nesta página se referem principalmente a repositórios no formato Docker e gcr.io. Para mais informações, consulte
Formatos compatíveis e a
Visão geral do repositório.
Registros
Um registro armazena e distribui imagens e artefatos de contêiner organizados por nome em repositórios. Um registro pode conter um ou vários repositórios e pode ser público ou particular.
Serviços de registro, como o Docker Hub e o Artifact Registry, oferecem opções para criar repositórios públicos ou particulares. Ao extrair imagens públicas, é importante entender os possíveis problemas de segurança. Leia sobre o gerenciamento de dependências para mais informações sobre o monitoramento de vulnerabilidades e a redução da sua dependência.
Os registros são organizados em repositórios que armazenam imagens de contêiner individuais. O Artifact Registry permite criar vários repositórios em um único projeto e associar um local regional ou multirregional específico a cada repositório. Os repositórios relacionados podem ser agrupados por rótulos.Repositórios do Artifact Registry e gerenciamento de imagens
Nos repositórios do Artifact Registry no formato Docker, é possível armazenar várias imagens de contêiner com nomes diferentes no mesmo repositório. Cada versão de uma imagem é identificada pelo resumo da imagem e pode ser associada a uma tag. As tags podem ser mutáveis ou imutáveis. Para mais informações sobre versões e tags de imagens de contêiner, consulte Versões de imagens de contêiner.
O Artifact Registry normalmente se refere a partes do caminho para uma imagem para identificar o projeto, o local regional ou multirregional, e o nome da imagem, além da tag ou do resumo do manifesto para identificar a versão correta.Exemplo:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
us-west1é o local do repositório.docker.pkg.devé o nome do host dos repositórios no formato Docker.PROJECTé o namespace criado pelo Google Cloud ID do projeto.quickstart-docker-repoé o namespace no projeto em que você armazena imagens. No Artifact Registry, essa parte do caminho é chamada de repositório.quickstart-imageé o nome de todas as versões dequickstart-imagee geralmente é chamado de a imagem.tag1é a tag que especifica a versão da imagem.
Imagens
Artefatos e imagens podem ser armazenados no Artifact Registry. Um artefato pode ser qualquer coisa: um arquivo de texto, uma imagem Docker ou um gráfico do Helm, enquanto uma imagem normalmente se refere a uma imagem do contêiner. As imagens de contêiner são pacotes de software que contêm todos os elementos necessários para serem executados em qualquer ambiente. Leia O que são contêineres para mais informações.
As imagens são enviadas ou carregadas para repositórios e extraídas ou baixadas de repositórios. Para especificar a imagem e a versão corretas, o registro e o artefato exclusivos precisam ser especificados.
Para mais informações sobre nomes de repositórios e imagens no Artifact Registry, consulte Nomes de repositórios e imagens.
Camadas
As imagens de contêiner armazenadas em repositórios são construídas de forma incremental usando camadas. Imagens diferentes podem usar algumas das mesmas camadas. As camadas são definidas de maneiras diferentes, dependendo do tipo de imagem. Por exemplo, cada instrução em um Dockerfile corresponde a uma camada na imagem Docker. Em um registro, as imagens com camadas comuns compartilham essas camadas, aumentando a eficiência do armazenamento. Por segurança, as camadas não são compartilhadas entre registros diferentes.
Quando você exclui uma imagem de contêiner, as camadas não são excluídas imediatamente. As camadas que não são referenciadas por nenhuma imagem no registro são excluídas diariamente.
Tags
Os usuários adicionam tags ao enviar ou extrair uma imagem para um repositório para especificar a versão de uma imagem. Uma imagem pode ter uma ou várias tags ou nenhuma tag. Se você estiver usando tags mutáveis e enviar uma imagem duas vezes com a mesma tag, a tag será removida da primeira imagem e movida para a segunda, deixando a primeira imagem sem uma tag. A imagem sem tag ainda pode ser acessada usando seus resumos do manifesto.
Se você estiver usando tags imutáveis, as seguintes ações não serão permitidas:
- Excluir uma imagem marcada. A exclusão de imagens não marcadas ainda é permitida.
- Remover uma tag de uma imagem.
- Enviar uma imagem com uma tag que já é usada por outra versão da imagem no repositório.
A tag latest é uma tag especial anexada quando as imagens são enviadas sem uma tag.
Exemplo:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
envia a imagem para hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
extrai a imagem hello-app:latest.
É importante observar que, quando uma imagem é enviada para um repositório com uma tag diferente de latest, a tag latest não é adicionada. Portanto, é possível que a imagem latest esteja atrasada em relação às mudanças mais recentes. Recomendamos o uso de tags diferentes de latest para versões.
Manifestos
Os manifestos de imagem identificam e especificam exclusivamente as camadas em cada imagem. Os manifestos são identificados por hashes SHA-256 exclusivos chamados de resumos de manifesto. Os resumos de manifesto são mais confiáveis e seguros do que as tags porque, em repositórios com tags mutáveis, várias versões da mesma imagem podem ser enviadas para a mesma tag, deixando algumas imagens sem tags, enquanto cada imagem é especificada exclusivamente pelo resumo do manifesto.
Se você usar ferramentas para verificar ou analisar imagens, os resultados dessas ferramentas só serão válidos para a imagem verificada. Para garantir a implantação da imagem que foi verificada, não é possível confiar na tag porque a imagem mencionada pela tag pode mudar.
Para saber mais sobre a marcação e os manifestos específicos do Artifact Registry, leia Gerenciar imagens e Usar imagens de contêiner.
Pré-aquecimento de imagens
Para aplicativos sensíveis à latência que usam streaming de imagens, esperar que uma imagem seja extraída pela primeira vez em um novo nó ou instância, geralmente chamado de "inicialização a frio", pode introduzir atrasos indesejados. O pré-aquecimento permite iniciar explicitamente o download de imagens no cache do streaming de imagens antes que elas sejam solicitadas. Esse processo ajuda a garantir que a imagem esteja disponível para entrega rápida quando o cluster do GKE a solicitar.
Para pré-aquecer imagens, use a API Artifact Registry. Para instruções, consulte Reduzir a latência com o pré-aquecimento de imagens.
A seguir
- Guia de início rápido do Docker
- Trabalhar com imagens de contêiner
- Guia de início rápido do Helm
- Trabalhar com gráficos do Helm
- Leia sobre DevOps e conheça o programa de pesquisa DORA.