Enviar (enviar) e extrair (fazer download) de imagens são duas das ações mais comuns e do Container Registry. Este documento se concentra em empurrar e extrair com o Docker.
Se você estiver usando o Cloud Build, consulte a Documentação do Cloud Build para informações sobre como criar e enviar contêineres para o Container Registry.
Para instruções sobre como listar, marcar e excluir imagens, consulte Como gerenciar imagens.
Antes de começar
Certifique-se de que você:
Como adicionar um registro
É possível adicionar os seguintes registros do Container Registry a um projeto:
Nome do host | Local de armazenamento |
---|---|
gcr.io |
Armazena imagens em data centers nos Estados Unidos |
asia.gcr.io |
Armazena imagens em data centers na Ásia |
eu.gcr.io |
Armazena imagens em data centers dentro de estados-membros da União Europeia |
us.gcr.io |
Armazena imagens em data centers nos Estados Unidos |
O primeiro envio de imagem para um nome de host aciona a criação do registro um projeto e o bucket de armazenamento do Cloud Storage correspondente. Esse envio inicial requer permissões em todo o projeto para criar buckets de armazenamento.
Quando um host de registro existir no projeto, será possível configurar permissões no bucket de armazenamento para controlar o acesso às imagens no registro.
Para adicionar um registro e configurar permissões:
Verifique se você tem as permissões necessárias. Você precisa ter o Papel Administrador de armazenamento (roles/storage.admin) ou um papel personalizado ou papel predefinido com as mesmas permissões.
Para instruções sobre como conceder o papel Administrador de armazenamento no nível do projeto, consulte a documentação do IAM.
Envie uma imagem inicial ao host. Por exemplo, os seguintes comandos:
- Extrair a imagem
busybox
do Docker Hub - Marque a imagem com o caminho de destino no Container Registry, incluindo
host de registro
gcr.io
e o ID do projetomy-project
- Enviar a imagem para o registro
docker pull busybox docker tag busybox gcr.io/my-project/busybox docker push gcr.io/my-project/busybox
- Extrair a imagem
O Container Registry adiciona o registro ao projeto e cria um repositório do bucket para o registro e armazena a imagem.
Agora é possível configurar o controle de acesso no armazenamento do registro. para conceder acesso ao registro a outros usuários.
Como enviar uma imagem para um registro
Para enviar qualquer imagem local para o Container Registry usando o Docker ou outro de terceiros, primeiro marque-a com o nome do registro e envie por push a imagem.
Os seguintes fatores podem afetar os uploads de imagens grandes:
- Tempo de upload
- Qualquer solicitação enviada ao Container Registry tem um tempo limite de duas horas. Se você autenticar no Container Registry usando um token de acesso, ele expira após 60 minutos. Se você espera que seu tempo de upload ultrapasse 60 minutos, use um método de autenticação diferente.
- Tamanho da imagem
- O Container Registry usa o Cloud Storage para os dados de o armazenamento subjacente. Cotas e limites do Cloud Storage são aplicadas a cada registro, incluindo o tamanho máximo de 5 TB para um objeto armazenamento. .
- O Container Registry não aceita uploads em partes do Docker. Algumas ferramentas suportam o upload de imagens grandes com uploads em partes ou um upload monolítico. Use uploads monolíticos para enviar imagens aos Container Registry.
Permissões necessárias
O envio de uma imagem requer uma das seguintes opções Papéis do Cloud Storage ou um papel com as mesmas permissões:
- Como enviar a primeira imagem para um registro no projeto
Papel: administrador do Storage (roles/storage.admin) no Nível do projeto do Google Cloud. O papel predefinido Proprietário inclui essas permissões.
Na primeira vez que você enviar uma imagem para um host de registro no seu projeto (como
gcr.io
), o Container Registry cria um bucket de armazenamento para o de registros. O papel Administrador do Storage tem as permissões necessárias para criar bucket de armazenamento.- Como enviar imagens para um registro existente no projeto
Papel: gravador de bucket legado do Storage (roles/storage.legacyBucketWriter) no do Google Cloud Storage.
Esse papel tem permissões para enviar e extrair imagens de hosts de registro atuais em seu projeto. Por exemplo, se o projeto tiver apenas
gcr.io
um usuário com o papel de Gravador de bucket legado do Storage pode enviar imagens paragcr.io
, mas não é possível enviar imagens paraasia.gcr.io
.
Para informações sobre como conceder permissões a um registro, consulte Como configurar o controle de acesso.
Marcar a imagem local com o nome do registro
Para marcar uma imagem:
- Verifique se você configurou a autenticação para Container Registry.
Determine o nome da imagem no Container Registry:
Escolha um nome de host, que especifica o local onde você armazenará a imagem.
gcr.io
hospeda imagens em data centers nos Estados Unidos, mas o local pode mudar no futurous.gcr.io
hospeda imagens em data centers nos Estados Unidos, em um bucket de armazenamento separado das imagens hospedadas porgcr.io
eu.gcr.io
hospeda as imagens na União Europeiaasia.gcr.io
hospeda imagens em data centers 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.
No console, o nome do host das imagens será listado em Local.
Escolha um nome para a imagem de destino, que pode ser diferente do nome da imagem na sua máquina local. Por exemplo, a imagem local pode ser chamada
web-image
, mas você quer armazená-lo no Container Registry comoweb-site
Combine o nome do host e o console do Google Cloud ID do projeto e o nome da imagem de destino:
HOSTNAME/PROJECT-ID/TARGET-IMAGE
Veja o exemplo a seguir.
- Nome do host:
gcr.io
- Projeto do Google Cloud:
my-project
- Nome da imagem de destino:
web-site
Combinar o nome do host, o projeto e o nome da imagem de destino dá a você caminho completo da imagem a ser usado para inclusão de tag:
gcr.io/my-project/web-site
Caso o ID do projeto contenha dois pontos (
:
), consulte Projetos com escopo de domínio.- Nome do host:
Marque a imagem local com o nome da etapa anterior. Se você quiser rotular essa versão da imagem com uma tag, inclua o nome da tag.
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG
Substitua:
- SOURCE_IMAGE é o nome ou o ID da imagem local.
- HOSTNAME é o host de registro que você escolheu na etapa 2.
- PROJECT é o ID do projeto do Google Cloud;
- TARGET-IMAGE é o nome da imagem quando ela é armazenada em Container Registry.
- TAG é a tag que você quer associar a essa versão da imagem.
Por exemplo, este comando marca a imagem local
web-image
comogcr.io/my-project/web-site
no Container Registry com a tagv1.5
docker tag web-image gcr.io/my-project/web-site:v1.5
Se você não especificar uma tag, o Docker adicionará a tag
latest
padrão. Comolatest
é uma tag padrão e representa a versão da imagem mais recente marcado com a taglatest
, e não necessariamente com a versão mais recente da tag imagem.
O Docker marca sua imagem com o nome dela e a tag que você especificou no comando.
Enviar a imagem marcada para o Container Registry
Verifique se você configurou a autenticação para Container Registry.
Envie a imagem com tag para o Container Registry:
Execute este comando para enviar uma imagem com uma tag específica:
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
Se você omitir
:TAG
, o Docker vai enviar a versão da imagem marcado comlatest
.Por exemplo, este comando envia a imagem
gcr.io/my-project/web-site
com com a tagv1.5
:docker push gcr.io/my-project/web-site:v1.5
Quando você envia uma imagem para um host de registro que ainda não existe no seu projeto, o Container Registry cria um bucket de armazenamento para o host de registro.
Para ver a imagem que você enviou:
Acesse o console do Google Cloud para conferir e imagem.
Corrida de
gcloud container images list-tags
para ver a tag de imagem e o resumo gerado automaticamente:gcloud container images list-tags HOSTNAME/PROJECT-ID/IMAGE
O resultado do comando é semelhante ao seguinte:
DIGEST TAGS TIMESTAMP 44bde... test 2017-..-..
Como extrair imagens de um registro
Extrair uma imagem requer Leitor de objetos do Storage para o bucket de armazenamento de registros ou um papel com as mesmas permissões.
Para extrair do Container Registry, use o comando:
docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG
ou
docker pull HOSTNAME/PROJECT-ID/IMAGE@IMAGE_DIGEST
onde:
- HOSTNAME está listado em Local no console É uma das
quatro opções:
gcr.io
,us.gcr.io
,eu.gcr.io
ouasia.gcr.io
. - PROJECT-ID é o console do Google Cloud.
ID do projeto.
Caso o ID do projeto contenha dois pontos (
:
), consulte Projetos com escopo de domínio. - IMAGE é o nome da imagem no Container Registry;
- TAG é a tag aplicada à imagem. Em um registro, as tags são exclusivas de uma imagem;
- IMAGE_DIGEST é o valor de hash sha256 do conteúdo da imagem. Em Console do Google Cloud, clique no para ver os metadados dela. O resumo é listado como Resumo da imagem.
Para receber o comando pull de uma imagem específica:
Clique no nome de uma imagem para acessar o registro específico.
No registro, marque a caixa ao lado da versão da imagem que você quer extrair.
Clique em EXIBIR COMANDO PULL na parte superior da página.
Copie o comando pull, que identifica a imagem usando a tag ou o resumo.
Próximas etapas
- Saiba mais sobre como gerenciar imagens, incluindo a adição ou remoção de tags e a exclusão de imagens.
- Saiba mais sobre como configurar o controle de acesso.
- Leia mais sobre os componentes e recursos do Container Registry.
- Saiba mais sobre como executar contêineres no Compute Engine.