Guia de início rápido: criar um repositório remoto do Docker Hub

Criar um repositório remoto do Docker Hub

Criar um repositório remoto para atuar como um proxy do Docker Hub.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Artifact Registry, Secret Manager.

    Ative as APIs

  5. Instale a CLI do Google Cloud.
  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Ative as APIs Artifact Registry, Secret Manager.

    Ative as APIs

  10. Instale a CLI do Google Cloud.
  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Crie uma conta do Docker Hub.

Funções exigidas

Para receber as permissões necessárias para criar um repositório remoto do Docker Hub, peça ao seu administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Escolha um shell

Para concluir este guia de início rápido, use o Cloud Shell ou o shell local.

Cloud Shell
O Cloud Shell é um ambiente de shell para gerenciar recursos hospedados no Google Cloud. Ele vem pré-instalado com o Docker e a Google Cloud CLI, a principal interface de linha de comando do Google Cloud.
Shell local
Se preferir usar o shell local, instale o Docker e a CLI gcloud no seu ambiente.

Como iniciar o Cloud Shell

Para iniciar o Cloud Shell, execute os seguintes passos:

  1. Acesse o Console do Google Cloud.

    Console do Google Cloud

  2. Clique no botão Ativar o Cloud Shell:  .

Uma sessão do Cloud Shell é aberta dentro de um quadro inferior no console. Use esse shell para executar comandos gcloud.

Como configurar um shell local

Para instalar a CLI gcloud e o Docker, execute as seguintes etapas:

  1. Instale a CLI da gcloud. Para atualizar uma instalação atual, execute o comando gcloud components update.

  2. Instale o Docker se ele ainda não estiver instalado.

  3. O Docker requer acesso com privilégios para interagir com registros. No Linux ou no Windows, adicione o usuário utilizado para executar comandos do Docker no grupo de segurança do Docker. Essa etapa não é necessária no macOS porque o Docker Desktop (em inglês) é executado em uma máquina virtual como o usuário raiz.

    Linux

    O grupo de segurança do Docker é chamado de docker. Para adicionar seu nome de usuário, execute o seguinte comando:

    sudo usermod -a -G docker ${USER}
    

    Windows

    O grupo de segurança do Docker é chamado de docker-users. Para adicionar um usuário a partir do prompt de comando do administrador, execute o seguinte comando:

    net localgroup docker-users DOMAIN\USERNAME /add
    

    Em que

    • DOMAIN é seu domínio do Windows.
    • USERNAME é seu nome de usuário.
  4. 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;

  5. Para garantir que o Docker esteja ativo, execute o seguinte comando do Docker, que retorna a hora e a data atuais:

    docker run --rm busybox date
    

    A sinalização --rm exclui a instância do contêiner na saída.

Configurar a autenticação do Docker Hub

Para evitar o uso de cotas do Docker Hub não autenticadas, recomendamos a autenticação no Docker Hub ao usar repositórios remotos. Os repositórios remotos permitem que você adicione seu nome de usuário do Docker Hub e um token de acesso pessoal salvo como um secret para autenticar no Docker Hub.

Criar um token de acesso pessoal do Docker Hub

  1. Faça login no Docker Hub.
  2. Crie um token de acesso pessoal com permissões somente leitura.
  3. Copie o token de acesso.

  4. Salve o token de acesso em um arquivo de texto no seu local ou no Cloud Shell.

Salve seu token de acesso pessoal em um secret

Console

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar a página "Gerenciador de secrets"

  2. Na página Gerenciador de secrets, clique em Criar secret.

  3. Na página Criar secret, em Nome, dê um nome my-secret ao secret.

  4. No campo Valor do secret, insira seu token de acesso pessoal do Docker Hub.

  5. Deixe a seção Regiões inalterada.

  6. Clique no botão Criar secret.

CLI da gcloud

gcloud secrets create my-secret --data-file="/path/to/file.txt"

Em que /path/to/file.txt é o local do arquivo de texto com seu token de acesso pessoal.

Conceda à conta de serviço do Artifact Registry acesso ao secret

Console

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar a página "Gerenciador de secrets"

  2. Na página Secret Manager, clique na caixa de seleção ao lado de my-secret.

  3. Se ela ainda não estiver aberta, clique em Mostrar painel de informações para abrir o painel.

  4. No painel de informações, clique em Adicionar participante.

  5. Na área de texto Novos principais, digite o endereço de e-mail da conta de serviço do Artifact Registry. O endereço de e-mail da conta de serviço do Artifact Registry é formatado da seguinte maneira

    service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

    Em que PROJECT-NUMBER é o número do projeto.

    Para encontrar o número do projeto:

    • Acesse a página Painel no console do Google Cloud.

      Acessar a página "Painel"

    • Clique na lista suspensa Selecionar de na parte superior da página.

    • Na janela Selecionar exibida, escolha seu projeto.

      O ID e o número do projeto são exibidos no card Informações do projeto no painel do projeto.

  6. Na lista suspensa Selecionar um papel, escolha Secret Manager e depois Acessador de secrets do Secret Manager.

CLI da gcloud

gcloud secrets add-iam-policy-binding my-secret \
    --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

Em que PROJECT-NUMBER é o número do projeto.

Para encontrar o número do projeto:

  • Acesse a página Painel no console do Google Cloud.

    Acessar a página "Painel"

  • Clique na lista suspensa Selecionar de na parte superior da página.

  • Na janela Selecionar exibida, escolha seu projeto.

    O ID e o número do projeto são exibidos no card Informações do projeto no painel do projeto.

Criar um repositório remoto

Crie um repositório remoto do Artifact Registry chamado quickstart-docker-hub-remote no local us-central1 com suas credenciais do Docker Hub executando o seguinte comando:

gcloud artifacts repositories create quickstart-docker-hub-remote \
    --project=PROJECT_ID \
    --repository-format=DOCKER  \
    --location=us-central1 \
    --description="Remote Docker repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Docker Hub" \
    --remote-docker-repo=DOCKER-HUB \
    --remote-username=USERNAME \
    --remote-password-secret-version=projects/PROJECT/secrets/my-secret/versions/1

Em que:

  • quickstart-docker-hub-remote é o nome do repositório. Os nomes de cada repositório em um projeto precisam ser exclusivos.
  • PROJECT_ID é o ID do projeto; Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • us-central1 é o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais compatíveis, execute o comando gcloud artifacts locations list.
  • "Remote Docker repository" é a descrição opcional do repositório. Não inclua dados confidenciais, porque as descrições do repositório não são criptografadas.
  • "Docker Hub" é a descrição opcional da configuração do repositório externo para este repositório remoto.
  • DOCKER-HUB define o upstream do repositório remoto como o upstream público do Docker Hub.
  • USERNAME é seu nome de usuário do Docker Hub;
  • projects/PROJECT/secrets/my-secret/versions/1 é a versão do secret que você criou para armazenar o token de acesso pessoal do Docker Hub.

O Artifact Registry cria o repositório e o adiciona à lista de repositórios.

Configurar a autenticação do Docker

Antes de enviar ou extrair imagens, configure o Docker para usar a Google Cloud CLI e autenticar solicitações ao Artifact Registry.

  1. Faça login na CLI gcloud como o usuário que executará comandos do Docker.

    gcloud auth login
    
  2. Para configurar a autenticação em repositórios do Docker na região us-central1, execute o seguinte comando:

    gcloud auth configure-docker us-central1-docker.pkg.dev
    

    O comando atualiza a configuração do Docker. Agora é possível se conectar com o Artifact Registry no projeto do Google Cloud para enviar e extrair imagens.

Para mais informações sobre outros métodos de autenticação, consulte a página Métodos de autenticação.

Extrair uma imagem para o repositório remoto

  1. Faça login na CLI gcloud como o usuário que executará comandos do Docker.

    gcloud auth login
    
  2. Extraia uma imagem do Docker Hub para sua máquina e para seu repositório remoto com o seguinte comando:

    docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latest
    

    Em que:

    • us-central1 é o local do repositório remoto.
    • us-central1-docker.pkg.dev é o nome do host do repositório do Docker que você criou.
    • PROJECT é o ID do projeto do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
    • quickstart-docker-hub-remote é o ID do repositório que você criou.
    • busybox é o nome da imagem que você quer extrair do Docker Hub para quickstart-docker-hub-remote.
    • latest é a versão da imagem com tag que você quer extrair do Docker Hub.

    A imagem é extraída para sua máquina e armazenada em cache no repositório remoto. Se você extrair a mesma imagem marcada novamente, ela será extraída do seu repositório remoto. Suas credenciais do Docker Hub estão sendo usadas.

  3. Liste os artefatos armazenados no seu repositório remoto:

    gcloud artifacts packages list \
        --location=us-central1 \
        --repository=quickstart-docker-hub-remote
    

    A saída será assim:

    Listing items under project my-project, location us-central1, repository quickstart-docker-hub-remote.
    
    PACKAGE: busybox
    CREATE_TIME: 2023-06-19T18:59:09
    UPDATE_TIME: 2023-06-19T18:59:10
    

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

Excluir seu repositório

Se você quiser manter o projeto e excluir apenas o recurso do repositório, siga as etapas nesta seção. Se você quiser excluir o projeto todo, siga as etapas em Excluir seu projeto.

Antes de remover o repositório, verifique se as imagens que você quer manter estão disponíveis em outro local.

Para excluir o repositório:

Console

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório quickstart-docker-hub-remote.

  3. Clique em Excluir.

gcloud

Para excluir o repositório quickstart-docker-hub-remote, execute o seguinte comando:

gcloud artifacts repositories delete quickstart-docker-hub-remote \
    --location=us-central1

Excluir o projeto

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir