Conceitos de contêiner

Este documento apresenta os principais conceitos relacionados às 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 do 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 privado.

Serviços de registro, como o Docker Hub e o Artifact Registry, oferecem opções para criar repositórios públicos ou privados. Ao extrair imagens públicas, é importante entender as possíveis questões de segurança. Leia sobre o gerenciamento de dependências para mais informações sobre como monitorar vulnerabilidades e reduzir o impacto das dependências.

Os registros são organizados em repositórios que armazenam imagens de contêineres 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

Em 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 imagem de contêiner.

O Artifact Registry normalmente se refere a partes do caminho de uma imagem para identificar o projeto, o local regional ou multirregional e o nome da imagem com a tag ou o 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 ID do projeto Google Cloud.
  • quickstart-docker-repo é o namespace do 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 de quickstart-image e é frequentemente chamado de 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 do Docker ou um gráfico do Helm, enquanto uma imagem geralmente se refere a uma imagem de 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 encaminhadas ou enviadas para repositórios e transferidas ou baixadas deles. 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ório e de imagem no Artifact Registry, consulte Nomes de repositório e de imagem.

Camadas

As imagens de contêiner armazenadas em repositórios são criadas 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 do Docker. Em um registro, as imagens com camadas comuns compartilham essas camadas, aumentando a eficiência do armazenamento. Por motivos de segurança, as camadas não são compartilhadas entre diferentes registros.

Quando você exclui uma imagem do 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. Se você estiver usando tags mutáveis e enviar uma imagem duas vezes com a mesma tag, ela 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 os resumos de 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 atrás das mudanças mais recentes. Recomendamos usar tags diferentes de latest para lançamentos.

Manifestos

Os manifestos de imagem identificam e especificam de forma exclusiva 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 de forma exclusiva pelo resumo de 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 tags e manifestos específicos do Artifact Registry, leia Como gerenciar imagens e Como usar imagens de contêineres.

A seguir