Conceitos de contentores

Este documento apresenta os principais conceitos relacionados com imagens de contentores, incluindo registos, repositórios e artefactos. Também são incluídas algumas informações básicas sobre como estes conceitos se aplicam ao Artifact Registry e ao Container Registry.

Os exemplos do Artifact Registry nesta página referem-se principalmente a repositórios no formato Docker e gcr.io. Para mais informações, consulte os formatos suportados e a descrição geral do repositório.

Bases de dados de registo

Um registo armazena e distribui imagens de contentores e artefactos organizados por nome em repositórios. Um registo pode conter um único repositório ou vários repositórios e pode ser público ou privado.

Os serviços de registo, como o Docker Hub e o Artifact Registry, oferecem opções para criar repositórios públicos ou privados. Quando extrai imagens públicas, é importante compreender as possíveis preocupações de segurança. Leia acerca da gestão de dependências para mais informações sobre a monitorização de vulnerabilidades e a redução da sua pegada de dependências.

Os registos estão organizados em repositórios que armazenam imagens de contentores individuais. O Artifact Registry permite-lhe criar vários repositórios num único projeto e associar uma localização regional ou multirregional específica a cada repositório. Os repositórios relacionados podem ser agrupados por etiquetas.

Repositórios do Artifact Registry e gestão de imagens

Nos repositórios de formato Docker do Artifact Registry, pode armazenar várias imagens de contentores com nomes diferentes no mesmo repositório. Cada versão de uma imagem é identificada pelo respetivo resumo da imagem e pode ser associada a uma etiqueta. As etiquetas podem ser mutáveis ou imutáveis. Para mais informações sobre as versões e as etiquetas das imagens de contentores, consulte o artigo Versões de imagens de contentores.

Normalmente, o Artifact Registry refere-se a partes do caminho para uma imagem para identificar o projeto, a localização regional ou multirregional e o nome da imagem juntamente com a etiqueta ou o resumo do manifesto para identificar a versão correta.

Por exemplo:

docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

  • us-west1 é a localização do repositório
  • docker.pkg.dev é o nome do anfitrião dos repositórios no formato Docker.
  • PROJECT é o espaço de nomes criado pelo seu Google Cloud ID do projeto.
  • quickstart-docker-repo é o espaço de nomes no seu projeto onde armazena imagens. No Artifact Registry, esta parte do caminho é denominada repositório.
  • quickstart-image é o nome de todas as versões de quickstart-image e é frequentemente referido como a imagem.
  • tag1 é a etiqueta que especifica a versão da imagem.

Imagens

Os artefactos e as imagens podem ser armazenados no Artifact Registry. Um artefacto pode ser qualquer coisa: um ficheiro de texto, uma imagem Docker ou um gráfico Helm, enquanto uma imagem se refere normalmente a uma imagem de contentor. As imagens de contentores são pacotes de software que contêm todos os elementos necessários para serem executados em qualquer ambiente. Leia o artigo O que são contentores para mais informações.

As imagens são enviadas ou carregadas para repositórios e extraídas ou transferidas de repositórios. Para especificar a imagem e a versão corretas, tem de especificar o registo e o artefacto únicos.

Para mais informações sobre os nomes de repositórios e imagens no Artifact Registry, consulte o artigo Nomes de repositórios e imagens.

Camadas

As imagens de contentores armazenadas em repositórios são construídas de forma incremental através de camadas. As diferentes imagens podem usar algumas das mesmas camadas. As camadas são definidas de formas diferentes consoante o tipo de imagem. Por exemplo, cada instrução num Dockerfile corresponde a uma camada na imagem Docker. Num registo, as imagens com camadas comuns partilham essas camadas, o que aumenta a eficiência do armazenamento. Por motivos de segurança, as camadas não são partilhadas entre diferentes registos.

Quando elimina uma imagem de contentor, as camadas não são eliminadas imediatamente. As camadas que não são referenciadas por nenhuma imagem no registo são eliminadas diariamente.

Etiquetas

Os utilizadores adicionam etiquetas quando enviam ou extraem uma imagem para um repositório para especificar a versão de uma imagem. Uma imagem pode ter uma ou várias etiquetas, ou nenhuma etiqueta. Se estiver a usar etiquetas mutáveis e enviar uma imagem duas vezes com a mesma etiqueta, a etiqueta é removida da primeira imagem e movida para a segunda, deixando a primeira imagem sem etiqueta. A imagem sem etiqueta continua acessível através dos respetivos resumos do manifesto.

Se estiver a usar etiquetas imutáveis, as seguintes ações não são permitidas:

  • Elimine uma imagem etiquetada. A eliminação de imagens sem etiquetas continua a ser permitida.
  • Remova uma etiqueta de uma imagem.
  • Envie uma imagem com uma etiqueta que já esteja a ser usada por outra versão da imagem no repositório.

A etiqueta latest é uma etiqueta especial anexada quando as imagens são enviadas sem uma etiqueta.

Por 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

puxa a imagem hello-app:latest.

É importante ter em atenção que, quando uma imagem é enviada para um repositório com uma etiqueta diferente de latest, a etiqueta latest não é adicionada. Por conseguinte, é possível que a imagem latest esteja desatualizada. Recomendamos a utilização de etiquetas que não sejam latest para lançamentos.

Manifestos

Os manifestos de imagens identificam e especificam de forma exclusiva as camadas em cada imagem. Os manifestos são identificados por hashes SHA-256 exclusivos denominados resumos de manifestos. Os resumos dos manifestos são mais fiáveis e seguros do que as etiquetas porque, nos repositórios com etiquetas mutáveis, podem ser enviadas várias versões da mesma imagem para a mesma etiqueta, deixando algumas imagens sem etiquetas, enquanto cada imagem é especificada de forma exclusiva pelo respetivo resumo do manifesto.

Se usar ferramentas para analisar ou digitalizar imagens, os resultados destas ferramentas só são válidos para a imagem digitalizada. Para garantir que implementa a imagem que foi analisada, não pode confiar na etiqueta, porque a imagem referida pela etiqueta pode mudar.

Para saber mais sobre a etiquetagem e os manifestos específicos do Artifact Registry, leia os artigos Gerir imagens e Usar imagens de contentores.

O que se segue?