Como enviar e extrair imagens

Nesta página, descrevemos como enviar e extrair imagens, duas das tarefas mais comuns realizadas com o Container Registry. Para enviar uma nova imagem ao Container Registry, primeiro você precisa marcá-la com o nome do registro, conforme descrito abaixo.

Para começar a usar o Container Registry, veja o guia de início rápido.

Para instruções sobre como listar, marcar e excluir imagens, consulte Como gerenciar imagens.

Antes de começar

Certifique-se de que você:

  1. Instalou a versão mais recente do Cloud SDK, que inclui a ferramenta de linha de comando gcloud.

  2. Ativou o faturamento do projeto.

  3. Instalou o Docker. A versão 18.03 ou mais recente será necessária se você quiser usar o auxiliar de credencial gcloud para autenticação (recomendado).

    Se você estiver usando um sistema operacional baseado em Linux, como Ubuntu ou Debian, adicione seu nome de usuário ao grupo docker para executar o Docker sem utilizar sudo:

    sudo usermod -a -G docker ${USER}

    Saia e acesse novamente para a mudança de filiação ao grupo fazer efeito. Se estiver usando uma máquina virtual, talvez seja necessário reiniciar a máquina virtual para a mudança fazer efeito.

  4. Tem permissões para enviar e extrair do registro.

  5. Configurou o Docker para usar gcloud como auxiliar de credencial ou está usando outro método de autenticação. Para usar o gcloud como o auxiliar de credencial, execute o comando:

    gcloud auth configure-docker
        
  6. O Docker precisa que os auxiliares de credenciais estejam no sistema PATH. Verifique se o assistente de credencial escolhido, gcloud ou docker-credential-gcr, está no sistema PATH.

Como enviar uma imagem para um registro

Para enviar qualquer imagem local para o Container Registry, primeiro inclua uma tag com o nome do registro e, em seguida, envie a imagem.

Marcar a imagem local com o nome do registro

  1. Determine o nome do registro:

    1. 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 futuro
      • us.gcr.io hospeda imagens em data centers nos Estados Unidos, em um intervalo de armazenamento separado das imagens hospedadas por gcr.io
      • eu.gcr.io hospeda as imagens na União Europeia
      • asia.gcr.io hospeda imagens em data centers na Ásia

      Esses locais correspondem às multirregiões para os intervalos de armazenamento do Cloud Storage. Quando você envia uma imagem para um registro com um novo nome do host, o Container Registry cria um intervalo de armazenamento no local multirregional especificado. Esse intervalo é o armazenamento subjacente para o registro. Em um projeto, todos os registros com o mesmo nome de host compartilham um intervalo de armazenamento.

      No console, o nome do host das imagens será listado em Local.

    2. Escolha um nome de imagem, que pode ser diferente do nome da imagem em sua máquina local.

    3. Combine o nome do host, o ID do projeto do Google Cloud Console e o nome da imagem:

      [HOSTNAME]/[PROJECT-ID]/[IMAGE]
          

      Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.

  2. Marcar a imagem local com o nome do registro usando o comando:

    docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]
        

    em que [SOURCE_IMAGE] é o nome da imagem local ou do ID da imagem.

    Esse comando nomeia a imagem com o nome do registro e aplica a tag latest. Se você quiser aplicar uma tag diferente, use o comando:

    docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
        

Enviar a imagem marcada para o Container Registry

O auxiliar de credencial do Docker é a maneira mais simples de configurar o Docker para autenticar diretamente com o Container Registry. Em seguida, use o comando docker para marcar, enviar e extrair imagens. Como alternativa, você pode usar as bibliotecas de cliente para gerenciar imagens de contêiner ou interagir diretamente com a API do Docker.

Use o comando a seguir para enviar a imagem marcada ao Container Registry:

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]
    

Este comando envia a imagem que tem a tag latest. Se você quiser enviar uma imagem com uma tag diferente, use o comando:

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

Quando você envia uma imagem para um registro com um novo nome do host, o Container Registry cria um intervalo de armazenamento no local multirregional especificado. Depois de enviar a imagem, você pode:

  • Acessar o Console do Cloud para ver o registro e a imagem.

  • Executar gcloud container images list-tags para visualizar a (s) tag (s) 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

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 ou asia.gcr.io.
  • [PROJECT-ID] é o ID do projeto do seu Console do Google Cloud. 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. No console, clique na imagem específica para ver seus metadados. O resumo é listado como o resumo da imagem.

Para receber o comando pull de uma imagem específica:

  1. Clique no nome de uma imagem para ir ao registro específico.

  2. No registro, marque a caixa ao lado da versão da imagem que você quer extrair.

  3. Clique em SHOW PULL COMMAND na parte superior da página.

  4. Copie o comando pull, que identifica a imagem usando a tag ou o resumo.

A seguir