Conceitos de contêiner

Este documento apresenta os principais conceitos relacionados a contêineres, 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.

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

Imagens e artefatos com o mesmo nome, mas tags diferentes, são organizados em repositórios. Se nenhuma tag for especificada quando uma imagem for enviada para um repositório, ela será marcada com a tag latest. Se outra imagem for enviada sem especificar uma tag, a tag latest será movida da imagem original para a imagem mais recente, deixando a primeira imagem sem uma tag. Recomendamos que você dê uma tag diferente de mais recente às versões.

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 do Docker.
  • PROJECT é o namespace criado pelo Google Cloud ID do projeto.
  • 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 repositório 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.

Exemplo:

docker pull us-west1-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

  • us-west1-docker.pkg.dev é o registro
  • /google-samples/containers/gke/ são o namespace e os subnamespaces. No Artifact Registry, google-samples é o projeto Google Cloud e containers é chamado de repositório do Artifact Registry.
  • hello-app é o nome do artefato
  • :1.0 é a tag que especifica a versão do artefato a ser extraída.

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ê enviar uma imagem duas vezes com a mesma tag, ela será removida da primeira imagem e movida para a segunda, deixando a primeira sem uma tag. A imagem sem tag ainda pode ser acessada pelos resumos de manifesto.

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 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