Este documento apresenta os principais conceitos relacionados a imagens de contêiner, 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.
Os exemplos do Artifact Registry nesta página se referem principalmente a repositórios no 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 ser público ou particular.
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 preocupações de segurança. Leia sobre o gerenciamento de dependências para mais informações sobre o monitoramento de vulnerabilidades e a redução da sua pegada de dependência.
Os registros são organizados em repositórios que armazenam imagens de contêiner individuais. Com o Artifact Registry, é possível 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
Nos 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 respectivo resumo 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 imagem do contêiner, consulte Versões de imagem do contêiner.
O Artifact Registry geralmente se refere a partes do caminho de uma imagem para identificar o projeto, o local regional ou multirregional e o nome da imagem, além da tag ou do 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óriodocker.pkg.devé o nome do host dos repositórios no formato Docker.PROJECTé o namespace criado pelo seu Google Cloud ID do projeto.quickstart-docker-repoé o namespace do seu 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 dequickstart-imagee geralmente é chamado de a 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 Docker ou um gráfico do Helm, enquanto uma imagem geralmente se refere a uma imagem do 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 enviadas ou carregadas para repositórios e extraídas ou baixadas de repositórios. 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órios e imagens no Artifact Registry, consulte Nomes de repositórios e imagens.
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 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 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ê estiver usando tags mutáveis e enviar uma imagem duas vezes com a mesma tag, a tag 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 do manifesto.
Se você estiver usando tags imutáveis, as seguintes ações não serão permitidas:
- Excluir uma imagem marcada. Ainda é permitido excluir imagens sem tag.
- Remova uma tag de uma imagem.
- Envie uma imagem com uma tag que já está sendo usada por outra versão da imagem no repositório.
A tag latest é especial e é 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 desatualizada. 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 maneira 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 por ela pode mudar.
Para saber mais sobre manifestos e tags específicos do Artifact Registry, leia Como gerenciar imagens e Como usar imagens de contêiner.
Pré-aquecimento de imagens
Para aplicativos sensíveis à latência que usam streaming de imagens, esperar que uma imagem seja extraída pela primeira vez em um novo nó ou instância, geralmente chamado de "inicialização a frio", pode causar atrasos indesejados. O pré-aquecimento permite iniciar explicitamente o download de imagens no cache do streaming de imagens antes que elas sejam solicitadas. Esse processo ajuda a garantir que sua imagem esteja disponível para entrega rápida quando o cluster do GKE a solicitar.
Para pré-aquecer imagens, use a API Artifact Registry. Para instruções, consulte Reduzir a latência com pré-aquecimento de imagens.
A seguir
- Guia de início rápido do Docker
- Trabalhar com imagens de contêiner
- Guia de início rápido do Helm
- Trabalhar com gráficos do Helm
- Leia sobre DevOps e conheça o programa de pesquisa DORA.