Conceitos de contêiner

Neste documento, apresentamos os principais conceitos relacionados a contêineres, incluindo registros, repositórios e artefatos. Também incluímos algumas informações básicas sobre como esses conceitos se aplicam ao Artifact Registry e ao Container Registry .

Registros

Um registro armazena e distribui imagens de contêiner e artefatos organizados por nome em repositórios. Um registro pode ter um ou vários repositórios, podendo ser público ou privado.

Os 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 as possíveis preocupações com a segurança. Leia sobre o gerenciamento de dependências para mais informações sobre o monitoramento de vulnerabilidades e como reduzir o consumo de dependências.

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 uma região ou multirregião 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, a imagem 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 mais recente, deixando a primeira sem uma tag. Recomendamos atribuir às versões uma tag diferente de latest.

O termo repositório nem sempre é usado de maneira consistente. No Artifact Registry, é mais útil usar partes do caminho para a imagem para identificar o projeto, região ou multirregião e o nome da imagem junto 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 as imagens são armazenadas. No Artifact Registry, essa parte do caminho é chamada de repositório.
  • quickstart-image é o repositório para todas as versões de quickstart-image e costuma ser chamado de imagem.
  • tag1 é a tag que especifica a versão da imagem.

Imagens

Os artefatos e as 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 normalmente se refere a uma imagem de contêiner. 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 transferidas por download a partir deles. Para especificar a imagem e a versão corretas, é necessário especificar o registro e o artefato exclusivos.

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

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 do Docker. Dentro de um registro, as imagens com camadas comuns as compartilham, 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 imagens no registro são excluídas diariamente.

Tags

Os usuários adicionam tags ao enviar ou enviar uma imagem para um repositório para especificar a versão dela. 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 a tag. A imagem sem tag ainda pode ser acessada pelos 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.

É 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 nas mudanças mais atualizadas. Recomendamos o uso de tags diferentes de latest para versões. Para mais informações sobre a marcação de imagens, veja como marcar corretamente suas imagens.

Manifestos

Manifestos de imagem identificam e especificam de forma exclusiva as camadas dentro de cada imagem. Os manifestos são identificados por hashes SHA-256 exclusivos, chamados resumos de manifesto. Os resumos do 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 sem tags, enquanto cada imagem é especificada exclusivamente pelo resumo do manifesto.

Se você usa ferramentas para verificar ou analisar imagens, os resultados delas são válidos apenas para a imagem verificada. Para garantir a implantação da imagem verificada, não confie na tag porque a imagem referenciada 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êiner.

A seguir