O Container Registry é o serviço legado para armazenar imagens de contêiner particulares no Google Cloud.
O serviço foi descontinuado. Você pode mover suas imagens atuais para o
Artifact Registry e continuar acessando-as usando o domínio gcr.io.
A partir de 15 de maio de 2024, os projetos sem uso anterior do Container Registry
somente vão hospedar 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 Como fazer a transição do Container Registry.
Como trabalhar com suas imagens
Muitas pessoas usam o Docker Hub como um registro central para armazenar imagens públicas do Docker. No entanto, para controlar o acesso às suas imagens, é necessário usar um registro privado, como o Artifact Registry ou o Container Registry.
Acesse o registro por meio de endpoints HTTPS seguros para enviar, extrair e gerenciar imagens de qualquer sistema, instância de VM ou seu próprio hardware.
- Integre o registro aos Google Cloud serviços de CI/CD ou às
ferramentas de CI/CD.
- Armazene imagens de contêiner do Cloud Build.
- Implante imagens de contêiner em Google Cloud ambientes de execução, incluindo Google Kubernetes Engine, Cloud Run, Compute Engine e ambiente flexível do App Engine.
- O Identity and Access Management fornece controle de acesso e credenciais consistentes.
 
- Proteja a cadeia de suprimentos de software do contêiner.
- Gerencie os metadados do contêiner e procure vulnerabilidades com o Artifact Analysis.
- Aplique políticas de implantação com a autorização binária.
 
- Proteja o registro em um perímetro de segurança do VPC Service Controls.
Registros
É possível criar até quatro hosts multirregionais em cada Google Cloud projeto com o Container Registry. Se você 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.
Registros no Container Registry são nomeados pelo host e pelo código do projeto. Para trabalhar com imagens (por exemplo, push, pull, delete), identifique a imagem usando o seguinte formato:
HOSTNAME/PROJECT-ID/IMAGE:TAG
ou
HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST
em que:
- HOSTNAME é o local onde a imagem está armazenada: - gcr.iohospeda as imagens nos Estados Unidos, mas o local pode mudar no futuro
- us.gcr.iohospeda a imagem nos Estados Unidos, em um bucket de armazenamento separado das imagens hospedadas por- gcr.io
- eu.gcr.iohospeda as imagens em estados-membros da União Europeia
- asia.gcr.iohospeda as imagens na Ásia
 - Esses locais correspondem às multirregiões para os buckets de armazenamento do Cloud Storage. Quando você envia uma imagem para um registro com um novo nome do host, o Container Registry cria um bucket de armazenamento no local multirregional especificado. Esse bucket é o armazenamento subjacente para o registro. Em um projeto, todos os registros com o mesmo nome de host compartilham um bucket de armazenamento. 
- PROJECT-ID é o ID do projeto do Google Cloud console. Se o ID do projeto contiver dois pontos ( - :), consulte Projetos com escopo de domínio abaixo.
- IMAGE é o nome da imagem. Ele pode ser diferente do nome local da imagem. No console Google Cloud , os registros do projeto são listados pelo nome da imagem. Cada repositório pode conter várias imagens com o mesmo nome. Por exemplo, ele pode conter versões diferentes de uma imagem denominada "my-image". 
- adicionar - :TAGe- @IMAGE-DIGESTno final permite distinguir uma versão específica da imagem, mas também é opcional. Se você não especificar uma tag ou o resumo, o Container Registry procurará a imagem com a tag padrão- latest. Consulte abaixo versões de imagens dentro de um registro.
Para a imagem my-image no registro gcr.io/PROJECT-ID, use este formato para enviar ou extrair uma imagem:
gcr.io/PROJECT-ID/my-image:tag1
em que PROJECT-ID é o ID do projeto do Google Cloud console.
Como organizar imagens com repositórios
É possível agrupar imagens relacionadas em um repositório dentro em um registro. Ao marcar, enviar ou extrair uma imagem, você especifica o nome do repositório no projeto no caminho da imagem.
No Container Registry, os repositórios são auxiliares de organização. Eles funcionam como pastas lógicas no caminho da imagem, mas não refletem a estrutura real do sistema de arquivos ou são compatíveis com um controle de acesso mais granular.
Considere as imagens a seguir armazenadas no host 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 usuário tiver acesso de gravação ao host us.gcr.io no projeto builds, ele terá acesso de gravação a qualquer caminho em us.gcr.io/builds porque todas as imagens estão no mesmo bucket de armazenamento, e não é possível restringir o acesso no nível do repositório ou da imagem.
Se você precisar de um controle de acesso mais granular, use o
Artifact Registry. No Artifact Registry, os repositórios
são recursos discretos, então é possível aplicar políticas do IAM separadas
a repositórios como us-docker.pkg.dev/builds/product1 e
us-docker.pkg.dev/builds/product2.
Versões de imagens dentro de um registro
Um registro pode conter muitas imagens, e essas imagens podem ter versões diferentes. Para identificar uma versão específica da imagem em um registro, especifique a tag ou o resumo da imagem.
- As tags atuam como um rótulo. É possível aplicar várias tags a uma imagem. Por exemplo,
uma imagem pode ter a tag v1.5para um número de versão erelease-candidatepara indicar a prontidão para testes finais.
- Os resumos são gerados automaticamente, são exclusivos de uma
versão de uma imagem e têm a forma @IMAGE-DIGEST, em que IMAGE-DIGEST é o valor de hash sha256 do conteúdo da imagem.
Para identificar uma versão específica da imagem my-image:
- adicione a tag da imagem: - gcr.io/PROJECT-ID/my-image:tag1
- ou adicione o resumo da imagem: - gcr.io/PROJECT-ID/my-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
em que PROJECT-ID é o ID do projeto do Google Cloud console.
Se o ID do projeto contiver dois pontos (:), consulte
Projetos com escopo de domínio
abaixo.
No Google Cloud console, na tela Imagens, a coluna Tags lista as tags da imagem. Clique na versão da imagem para ver os metadados, incluindo o Resumo da imagem.
Consulte Como incluir tags em imagens para saber como modificar tags.
Projetos de escopo de domínio
Se seu projeto estiver no escopo de seu domínio, o ID do projeto incluirá o nome do
domínio seguido por dois pontos (:). Por causa de como o Docker trata dois-pontos,
você deve substituir o caractere de dois pontos por uma barra quando especificar
um resumo de imagem no Container Registry. Identifique imagens nesses tipos de projetos usando o seguinte formato:
HOSTNAME/[DOMAIN]/[PROJECT]/IMAGE
Por exemplo, o projeto com o ID example.com:my-project poderia ter a
seguinte imagem:
gcr.io/example.com/my-project/image-name
Nomes de registro como URLs
O URL https://HOSTNAME/PROJECT-ID/IMAGE
é um URL de uma imagem no console Google Cloud . Qualquer usuário
autenticado que tenha permissão para acessar o host do registro pode usar links para conferir
as imagens armazenadas. Consulte Registros para detalhes sobre o formato do caminho
da imagem.
Por exemplo, os URLs a seguir vinculam a registros públicos no consoleGoogle Cloud :
Formatos de imagem de contêiner
O Container Registry é compatível com o Docker Image Manifest V2 e com formatos de imagem OCI. Para mais informações, consulte Formatos de imagem de contêiner.
Se você quiser armazenar imagens e outros tipos de artefatos de forma centralizada, use o Artifact Registry em vez do Container Registry.
Controle de acesso
No Container Registry, as tags e os arquivos de camada para imagens de contêiner são armazenados em um bucket do Cloud Storage no mesmo projeto que o registro. O acesso ao bucket é configurado com as definições de gerenciamento de acesso e identidade (IAM, na sigla em inglês) do Cloud Storage.
Um usuário que tem acesso a um host de registro pode acessar qualquer imagem no bucket de armazenamento do host. Se você precisar de um controle de acesso mais granular, use o Artifact Registry. O Artifact Registry oferece controle de acesso no nível do repositório.
Por padrão, os proprietários e editores do projeto têm permissões de push e pull para esse bucket do projeto do Container Registry. Os leitores do projeto têm apenas permissão de pull.
Para mais informações sobre as permissões do Container Registry, consulte Como configurar o controle de acesso.
Acesse os avisos de suspensão e veja mais informações sobre planos que mudam metadados de imagem do Cloud Storage para uma base de dados de back-end de alto desempenho.
Authentication
Antes de enviar ou extrair imagens, você deve configurar a autenticação. Você pode configurar o Docker para usar a CLI do Google Cloud na autenticação de solicitações para o Container Registry. O Container Registry também oferece suporte a métodos avançados de autenticação com uso de tokens de acesso ou arquivos de chave JSON.
Auxiliar de credenciais do Docker
É necessário que o Docker tenha acesso ao Container Registry para enviar e receber imagens. Use a ferramenta de linha de comando auxiliar de credenciais do Docker para configurar as credenciais do Container Registry para uso com o Docker.
A ferramenta auxiliar de credenciais recebe as credenciais do Container Registry automaticamente ou
de um local especificado usando um sinalizador --token-source.
Em seguida, ela grava as credenciais no arquivo de configuração do Docker. Dessa forma, você pode usar a
ferramenta de linha de comando do Docker, docker, para interagir diretamente com
o Container Registry.
Para mais informações, consulte Autenticação avançada.
Conta do serviço do Container Registry
Quando você ativa a Container Registry API, o Container Registry adiciona ao seu projeto uma conta de serviço Essa conta de serviço tem o seguinte ID:
service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com
Essa conta de serviço foi criada especificamente para que o Container Registry possa executar as tarefas do serviço no seu projeto. O Google gerencia essa conta, mas ela é específica para seu projeto.
Se você excluir essa conta de serviço ou alterar suas permissões, alguns recursos do Container Registry não funcionarão corretamente. Você não deve modificar papéis nem excluir a conta.
Para mais informações sobre essa conta de serviço e as permissões dela, consulte Conta de serviço do Container Registry.
Cache de pull
O registro mirror.gcr.io armazena em cache imagens públicas solicitadas com frequência do
Docker Hub.
O uso de imagens armazenadas em cache pode acelerar a execução de pulls do Docker Hub. Seu cliente sempre verifica a cópia em cache de uma imagem do Docker Hub antes de tentar extraí-la diretamente do Docker Hub.
Para mais informações, consulte Como extrair imagens armazenadas em cache do Docker Hub.
Notificações
É possível usar o Pub/Sub para receber notificações sobre alterações nas imagens do contêiner.
Para obter mais informações, consulte Como configurar notificações do Pub/Sub.
Como usar o Container Registry com Google Cloud
As instâncias do Compute Engine e os clusters do Google Kubernetes Engine podem enviar e extrair imagens do Container Registry por push ou pull com base nos escopos do Cloud Storage nas instâncias. Consulte Como usar o Container Registry com Google Cloud.
As imagens armazenadas no Container Registry podem ser implantadas no ambiente flexível do App Engine.
Integrações de ferramenta de entrega contínua
O Container Registry funciona com sistemas de integração e entrega contínua conhecidos, incluindo o Cloud Build e ferramentas de terceiros, como o Jenkins.
O Container Registry se integra perfeitamente aos serviços do Google Cloud . Por exemplo, o Cloud Build pode enviar e extrair imagens de hosts do Container Registry no mesmo projeto por padrão. Ambientes de execução, como o Google Kubernetes Engine e o Cloud Run, também podem extrair imagens de hosts de registro no mesmo projeto por padrão.
Como alternativa, use ferramentas de terceiros, como o Jenkins, para criar, extrair e enviar suas imagens. Ao usar uma ferramenta de terceiros, você precisa configurar permissões e autenticação para a conta que vai interagir com o Container Registry em nome da ferramenta.
Para conferir exemplos de integrações, consulte os guias técnicos do Google Cloud que incluem o Container Registry.