Vista geral do Container Registry

O Container Registry é o serviço antigo para armazenar imagens de contentores privados no Google Cloud.

O serviço foi descontinuado. Pode mover as suas imagens existentes para o Artifact Registry e continuar a aceder às mesmas através do domínio gcr.io. A partir de 15 de maio de 2024, os projetos sem utilização anterior do Container Registry vão alojar apenas imagens para o domínio gcr.io no Artifact Registry.

Para uma comparação entre o Container Registry e o Artifact Registry, e informações sobre a transição do Container Registry para o Artifact Registry, consulte Transição do Container Registry.

Trabalhar com as suas imagens

Muitas pessoas usam o Docker Hub como um registo central para armazenar imagens Docker públicas, mas para controlar o acesso às suas imagens, tem de usar um registo privado, como o Artifact Registry ou o Container Registry.

Pode aceder ao registo através de pontos finais HTTPS seguros, que lhe permitem enviar, extrair e gerir imagens a partir de qualquer sistema, instância de VM ou do seu próprio hardware.

Bases de dados de registo

Pode criar até quatro anfitriões multirregionais em cada Google Cloud projeto com o Container Registry. Se quiser criar repositórios mais discretos com políticas de acesso separadas ou armazenar imagens em regiões em vez de multirregiões, use o Artifact Registry.

Os registos no Container Registry são denominados pelo anfitrião e pelo ID do projeto. Para trabalhar com imagens (por exemplo, enviar, extrair, eliminar), identifique a imagem através do seguinte formato:

HOSTNAME/PROJECT-ID/IMAGE:TAG

ou

HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST

where:

  • HOSTNAME é a localização onde a imagem está armazenada:

    • Atualmente, o gcr.io aloja as imagens nos Estados Unidos, mas a localização pode mudar no futuro
    • us.gcr.io aloja a imagem nos Estados Unidos, num contentor de armazenamento separado das imagens alojadas pelo gcr.io
    • eu.gcr.io aloja as imagens nos estados-membros da União Europeia
    • asia.gcr.io aloja as imagens na Ásia

    Estas localizações correspondem às multirregiões para contentores de armazenamento do Cloud Storage. Quando envia uma imagem para um registo com um novo nome de anfitrião, o Container Registry cria um contentor de armazenamento na multirregião especificada. Este contentor é o armazenamento subjacente do registo. Num projeto, todos os registos com o mesmo nome de anfitrião partilham um contentor de armazenamento.

  • PROJECT-ID é o Google Cloud ID do projeto da consola. Se o ID do seu projeto contiver dois pontos (:), consulte a secção Projetos com âmbito de domínio abaixo.

  • IMAGE é o nome da imagem. Pode ser diferente do nome local da imagem. Na Google Cloud consola, os registos do projeto são apresentados por nome da imagem. Cada repositório pode conter várias imagens com o mesmo nome. Por exemplo, pode conter diferentes versões de uma imagem denominada "my-image".

  • A adição de :TAG ou @IMAGE-DIGEST no final permite distinguir uma versão específica da imagem, mas também é opcional. Se não especificar uma etiqueta ou o resumo, o Container Registry procura a imagem com a etiqueta predefinida latest. Veja as Versões de imagens num registo abaixo.

Para a imagem my-image no registo gcr.io/PROJECT-ID, use este formato para enviar ou extrair uma imagem:

gcr.io/PROJECT-ID/my-image:tag1

onde PROJECT-ID é o Google Cloud ID do projeto da consola.

Organizar imagens com repositórios

Pode agrupar imagens relacionadas num repositório num registo. Quando etiqueta, envia ou extrai uma imagem, especifica o nome do repositório no projeto no caminho da imagem.

No Container Registry, os repositórios são uma ajuda para a organização. Funcionam como pastas lógicas no caminho da imagem, mas não refletem a estrutura real do sistema de ficheiros nem suportam um controlo de acesso mais detalhado.

Considere as seguintes imagens armazenadas no anfitrião us.gcr.io no projeto builds:

us.gcr.io/builds/product1/dev/product1-app:beta-2.0
us.gcr.io/builds/product1/stable/product1:1.0
us.gcr.io/builds/product2/dev/product2:alpha
us.gcr.io/builds/product2/stable/product2:1.0

Se um utilizador tiver acesso de escrita ao anfitrião us.gcr.io no projeto builds, tem acesso de escrita a qualquer caminho em us.gcr.io/builds, porque todas as imagens estão no mesmo contentor de armazenamento e não pode restringir o acesso ao nível do repositório ou da imagem.

Se precisar de um controlo de acesso mais detalhado, pode usar o Artifact Registry. No Artifact Registry, os repositórios são recursos discretos, pelo que pode aplicar políticas IAM separadas aos repositórios, como us-docker.pkg.dev/builds/product1 e us-docker.pkg.dev/builds/product2.

Versões de imagens num registo

Um registo pode conter muitas imagens, e estas imagens podem ter diferentes versões. Para identificar uma versão específica da imagem num registo, pode especificar a etiqueta ou o resumo da imagem.

  • As etiquetas funcionam como um rótulo. Pode aplicar várias etiquetas a uma imagem. Por exemplo, uma imagem pode ter a etiqueta v1.5 para um número de versão e release-candidate para indicar que está pronta para os testes finais.
  • Os resumos são gerados automaticamente, são exclusivos de uma versão de uma imagem e têm o formato @IMAGE-DIGEST, em que IMAGE-DIGEST é o valor hash sha256 do conteúdo da imagem.

Para identificar uma versão específica da imagem my-image:

  • Adicione a etiqueta de imagem:

    gcr.io/PROJECT-ID/my-image:tag1
    
  • Em alternativa, adicione o resumo da imagem:

    gcr.io/PROJECT-ID/my-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

onde PROJECT-ID é o Google Cloud ID do projeto da consola. Se o ID do seu projeto contiver dois pontos (:), consulte a secção Projetos com âmbito de domínio abaixo.

Na Google Cloud consola, no ecrã Imagens, a coluna Etiquetas apresenta as etiquetas da imagem. Clique na versão da imagem para ver os metadados, incluindo o resumo da imagem.

Consulte o artigo Etiquetar imagens para saber como modificar etiquetas.

Projetos no âmbito do domínio

Se o seu projeto estiver no âmbito do seu domínio, o ID do projeto inclui o nome do domínio seguido de dois pontos (:). Devido à forma como o Docker trata os dois pontos, tem de substituir o caráter de dois pontos por uma barra invertida quando especifica um resumo da imagem no Container Registry. Identifique imagens nestes tipos de projetos com o seguinte formato:

HOSTNAME/[DOMAIN]/[PROJECT]/IMAGE

Por exemplo, o projeto com o ID example.com:my-project pode ter a seguinte imagem:

gcr.io/example.com/my-project/image-name

Nomes de bases de dados de registo como URLs

O URL https://HOSTNAME/PROJECT-ID/IMAGE é um URL de uma imagem na Google Cloud consola. Qualquer utilizador autenticado que tenha autorização para aceder ao anfitrião do registo pode usar links para ver quaisquer imagens que armazene. Consulte Registos para ver detalhes sobre o formato do caminho da imagem.

Por exemplo, os seguintes URLs estabelecem ligação a registos públicos na Google Cloud consola:

Formatos de imagens de contentores

O Container Registry suporta o formato de imagem Docker Image Manifest V2 e OCI. Para mais informações, consulte o artigo Formatos de imagens de contentores.

Se quiser armazenar imagens e outros tipos de artefactos de forma centralizada, considere usar o Artifact Registry em vez do Container Registry.

Controlo de acesso

O Container Registry armazena as respetivas etiquetas e ficheiros de camadas para imagens de contentores num contentor do Cloud Storage no mesmo projeto que o registo. O acesso ao contentor é configurado através das definições de gestão de identidade e acesso (IAM) do Cloud Storage.

Um utilizador que tenha acesso a um anfitrião de registo pode aceder a qualquer imagem no contentor de armazenamento do anfitrião. Se precisar de um controlo de acesso mais detalhado, considere usar o Artifact Registry. O Artifact Registry oferece controlo de acesso ao nível do repositório.

Por predefinição, os proprietários e os editores do projeto têm autorizações de envio e obtenção para o contentor do Container Registry desse projeto. Os visitantes do projeto só têm autorização de obtenção.

Para mais informações sobre as autorizações do Container Registry, consulte o artigo Configurar o controlo de acesso.

Consulte os avisos de descontinuação do Container Registry para ver informações sobre os planos de mover os metadados das imagens do Cloud Storage para uma base de dados de back-end de alto desempenho.

Autenticação

Antes de poder enviar ou extrair imagens, tem de configurar a autenticação. Pode configurar o Docker para usar a CLI do Google Cloud para autenticar pedidos ao Container Registry. O Container Registry também suporta métodos de autenticação avançados através de tokens de acesso ou ficheiros de chaves JSON.

Assistente de credenciais do Docker

O Docker precisa de acesso ao Container Registry para enviar e extrair imagens. Pode usar a ferramenta de linha de comandos auxiliar de credenciais do Docker para configurar as credenciais do Container Registry para utilização com o Docker.

O auxiliar de credenciais obtém as suas credenciais do Container Registry, quer seja automaticamente ou a partir de uma localização especificada através da respetiva flag --token-source, e escreve-as no ficheiro de configuração do Docker. Desta forma, pode usar a ferramenta de linha de comandos do Docker, docker, para interagir diretamente com o Container Registry.

Para mais informações, consulte o artigo Autenticação avançada.

Conta de serviço do Container Registry

Quando ativa a API Container Registry, o Container Registry adiciona uma conta de serviço ao seu projeto. Esta conta de serviço tem o seguinte ID:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Esta conta de serviço do Container Registry foi concebida especificamente para o Container Registry desempenhar as respetivas funções de serviço no seu projeto. A Google gere esta conta, mas é específica do seu projeto.

Se eliminar esta conta de serviço ou alterar as respetivas autorizações, determinadas funcionalidades do Container Registry não vão funcionar corretamente. Não deve modificar funções nem eliminar a conta.

Para mais informações acerca desta conta de serviço e das respetivas autorizações, consulte o artigo Conta de serviço do Container Registry.

Cache de obtenção

O registo mirror.gcr.io armazena em cache imagens públicas pedidas com frequência do Docker Hub.

A utilização de imagens em cache pode acelerar as transferências do Docker Hub. O seu cliente verifica sempre se existe uma cópia em cache de uma imagem do Docker Hub antes de tentar extraí-la diretamente do Docker Hub.

Para mais informações, consulte o artigo Extrair imagens do Docker Hub em cache.

Notificações

Pode usar o Pub/Sub para receber notificações sobre alterações às imagens dos contentores.

Para mais informações, consulte o artigo Configurar notificações do Pub/Sub.

Usar o Container Registry com o Google Cloud

As instâncias do Compute Engine e os clusters do Google Kubernetes Engine podem enviar e extrair imagens do Container Registry com base nos âmbitos do Cloud Storage nas instâncias. Consulte o artigo Usar o Container Registry com Google Cloud.

As imagens armazenadas no Container Registry podem ser implementadas no ambiente flexível do App Engine.

Integrações de ferramentas de entrega contínua

O Container Registry funciona com sistemas populares de integração contínua e entrega contínua, incluindo o Cloud Build e ferramentas de terceiros, como o Jenkins.

O Container Registry integra-se perfeitamente com os serviços Google Cloud . Por exemplo, o Cloud Build pode enviar imagens para hosts do Container Registry e extrair imagens dos mesmos no mesmo projeto por predefinição. Os ambientes de tempo de execução, como o Google Kubernetes Engine e o Cloud Run, também podem extrair imagens dos anfitriões de registo no mesmo projeto por predefinição.

Em alternativa, pode usar ferramentas de terceiros, como o Jenkins, para criar, extrair e enviar as suas imagens. Quando usar uma ferramenta de terceiros, tem de configurar as autorizações e a autenticação para a conta que vai interagir com o Container Registry em nome da ferramenta.

Para explorar exemplos de integrações, consulte os guias técnicos do Google Cloud que incluem o Container Registry.