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 único repositório ou múltiplos repositórios, e podem ser públicos ou privados.

Serviços de registro, como o Docker Hub e o Artifact Registry, oferecem 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 gerenciamento de dependência para mais informações sobre vulnerabilidades monitorar e reduzir o consumo de dependências.

Os registros são organizados em repositórios que armazenam de imagens de contêiner. O Artifact Registry permite criar vários repositórios em um único projeto e associar um objeto específico região ou multirregião com 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, a imagem recebe a tag latest. Se outra imagem for enviada Ao especificar uma tag, a tag latest é movida da imagem original para a mais recente. imagem, deixando a primeira sem uma tag. Recomendamos que você dê uma tag diferente de mais recente às versões.

O termo repositório nem sempre é usado de forma consistente. No Artifact Registry, é mais útil usar partes do caminho para a imagem para identificar o projeto, a região ou multi-região 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 ID do projeto do Google Cloud.
  • quickstart-docker-repo é o namespace no projeto em que você armazena de imagens de contêiner. No Artifact Registry, essa parte do caminho é chamada de repositório de dados.
  • 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 pode ser qualquer coisa: um arquivo de texto, uma imagem docker ou um gráfico do Helm, enquanto um normalmente se refere a uma imagem de contêiner. Imagens de contêiner são pacotes softwares 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 extraídos ou baixados deles. Para especificar a imagem e a versão corretas, e o artefato 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 do 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

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 do Docker. Em um registro, 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 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. Se você enviar uma imagem duas vezes com a mesma tag, ela será removida do da primeira imagem e movida para a segunda, deixando a primeira sem uma tag. O imagem sem tag ainda pode ser acessada por meio dos resumos do 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.

Quando uma imagem é enviada para um repositório com uma tag diferente de latest, a tag latest não é adicionada. Portanto, é possível a imagem latest para exibir as mudanças mais atualizadas. 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 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 que você implante a imagem que foi digitalizado, não pode confiar na etiqueta porque a imagem referida pela etiqueta 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