Crie um repositório remoto do Docker Hub

Crie um repositório remoto para atuar como um proxy para o Docker Hub.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Secret Manager APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Artifact Registry, Secret Manager APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  13. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  14. Crie uma conta do Docker Hub.
  15. Funções necessárias

    Para receber as autorizações de que precisa para criar um repositório remoto do Docker Hub, peça ao seu administrador que lhe conceda as seguintes funções de IAM:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

    Escolha uma shell

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

    Cloud Shell
    O
    Cloud Shell é um ambiente de shell para gerir recursos alojados no Google Cloud. É fornecido pré-instalado com o Docker e a CLI do Google Cloud, a principal interface de linhas de comando para o Google Cloud.
    Shell local
    Se preferir usar a shell local, tem de instalar o Docker e a CLI gcloud no seu ambiente.

    A iniciar o Cloud Shell

    Para iniciar o Cloud Shell, siga estes passos:

    1. Aceda à Google Cloud consola.

      Google Cloud consola

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

    É aberta uma sessão do Cloud Shell num frame na parte inferior da consola. Use esta shell para executar comandos gcloud.

    Configurar uma shell local

    Para instalar a CLI gcloud e o Docker, siga estes passos:

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

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

    3. O Docker requer acesso privilegiado para interagir com registos. No Linux ou Windows, adicione o utilizador que usa para executar comandos do Docker ao grupo de segurança do Docker. Este passo não é necessário no macOS, uma vez que o Docker Desktop é executado numa máquina virtual como utilizador root.

      Linux

      O grupo de segurança do Docker chama-se docker. Para adicionar o seu nome de utilizador, execute o seguinte comando:

      sudo usermod -a -G docker ${USER}
      

      Windows

      O grupo de segurança do Docker chama-se docker-users. Para adicionar um utilizador a partir da linha de comandos do administrador, execute o seguinte comando:

      net localgroup docker-users DOMAIN\USERNAME /add
      

      Onde

      • DOMAIN é o seu domínio do Windows.
      • USERNAME é o seu nome de utilizador.
    4. Termine sessão e inicie-a novamente para que as alterações de subscrição do grupo entrem em vigor. Se estiver a usar uma máquina virtual, pode ter de a reiniciar para que as alterações à subscrição sejam aplicadas.

    5. Para garantir que o Docker está em execução, execute o seguinte comando do Docker, que devolve a data e a hora atuais:

      docker run --rm busybox date
      

      A flag --rm elimina a instância do contentor ao sair.

    Configure a autenticação do Docker Hub

    Para evitar a utilização da quota do Docker Hub não autenticada, recomendamos que se autentique no Docker Hub quando utilizar repositórios remotos. Os repositórios remotos permitem-lhe adicionar o seu nome de utilizador do Docker Hub e um token de acesso pessoal guardado como um segredo para autenticar no Docker Hub.

    Crie um token de acesso pessoal do Docker Hub

    1. Inicie sessão no Docker Hub.
    2. Crie um token de acesso pessoal com autorizações só de leitura.
    3. Copie o token de acesso.

    4. Guarde o token de acesso num ficheiro de texto no seu computador local ou no Cloud Shell.

    Guarde a sua chave de acesso pessoal num segredo

    consola

    1. Aceda à página Secret Manager na Google Cloud consola.

      Aceda à página Secret Manager

    2. Na página Secret Manager, clique em Create Secret.

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

    4. No campo Valor secreto, introduza o seu token de acesso pessoal do Docker Hub.

    5. Não altere a secção Regiões.

    6. Clique no botão Criar segredo.

    CLI gcloud

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

    Onde /path/to/file.txt é a localização do ficheiro de texto com o seu token de acesso pessoal.

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

    consola

    1. Aceda à página Secret Manager na Google Cloud consola.

      Aceda à página Secret Manager

    2. Na página Secret Manager, clique na caixa de verificação junto a my-secret.

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

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

    5. Na área de texto Novos membros, introduza o endereço de email da conta de serviço do Artifact Registry. O endereço de email da conta de serviço do Artifact Registry está formatado da seguinte forma

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

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

      Para encontrar o número do projeto:

      • Aceda à página Painel de controlo na Google Cloud consola.

        Aceda à página Painel de controlo

      • Clique na lista pendente Selecionar a partir de na parte superior da página.

      • Na janela Selecionar de apresentada, selecione o seu projeto.

        O ID do projeto e o número do projeto são apresentados no cartão Informações do projeto do painel de controlo do projeto.

    6. No menu pendente Selecionar uma função, escolha Secret Manager e, de seguida, Secret Manager Secret Accessor.

    CLI 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:

    • Aceda à página Painel de controlo na Google Cloud consola.

      Aceda à página Painel de controlo

    • Clique na lista pendente Selecionar a partir de na parte superior da página.

    • Na janela Selecionar de apresentada, selecione o seu projeto.

      O ID do projeto e o número do projeto são apresentados no cartão Informações do projeto do painel de controlo do projeto.

    Crie um repositório remoto

    Crie um repositório remoto do Artifact Registry denominado quickstart-docker-hub-remote na localização us-central1 com as 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
    

    Onde:

    • quickstart-docker-hub-remote é o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.
    • PROJECT_ID é o ID do seu projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.
    • us-central1 é a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comando gcloud artifacts locations list.
    • "Remote Docker repository" é a descrição opcional do seu repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.
    • "Docker Hub" é a descrição opcional da configuração do repositório externo para este repositório remoto.
    • DOCKER-HUB define o repositório remoto a montante para o Docker Hub público a montante.
    • USERNAME é o seu nome de utilizador do Docker Hub.
    • projects/PROJECT/secrets/my-secret/versions/1 é a versão secreta que criou para armazenar o seu token de acesso pessoal do Docker Hub.

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

    Configure a autenticação do Docker

    Antes de poder enviar ou extrair imagens, configure o Docker para usar a CLI Google Cloud para autenticar pedidos para o Artifact Registry.

    1. Inicie sessão na CLI gcloud como o utilizador que vai executar os comandos do Docker.

      gcloud auth login
      
    2. Para configurar a autenticação nos 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, pode estabelecer ligação ao Artifact Registry no seu Google Cloud projeto para enviar e extrair imagens.

    Para informações sobre outros métodos de autenticação, consulte o artigo Métodos de autenticação.

    Extraia uma imagem para o seu repositório remoto

    1. Inicie sessão na CLI gcloud como o utilizador que vai executar os comandos do Docker.

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

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

      Onde:

      • us-central1 é a localização do repositório remoto.
      • us-central1-docker.pkg.dev é o nome do anfitrião do repositório do Docker que criou.
      • PROJECT é o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:), consulte o artigo Projetos com âmbito de domínio.
      • quickstart-docker-hub-remote é o ID do repositório que criou.
      • busybox é o nome da imagem que quer extrair do Docker Hub para quickstart-docker-hub-remote.
      • latest é a versão da imagem etiquetada que quer extrair do Docker Hub.

      A imagem é transferida para o seu computador e colocada em cache no repositório remoto. Se extrair novamente a mesma imagem etiquetada, esta é extraída do seu repositório remoto. As suas credenciais do Docker Hub são usadas.

    3. Apresente a lista dos artefactos armazenados no seu repositório remoto:

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

      O resultado é semelhante ao seguinte:

      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 incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

    Elimine o seu repositório

    Se quiser manter o projeto e eliminar apenas o recurso do repositório, siga os passos nesta secção. Se quiser eliminar todo o projeto, siga os passos descritos no artigo Elimine o seu projeto

    Antes de remover o repositório, certifique-se de que as imagens que quer manter estão disponíveis noutra localização.

    Para eliminar o repositório:

    Consola

    1. Abra a página Repositórios na Google Cloud consola.

      Abra a página Repositórios

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

    3. Clique em Eliminar.

    gcloud

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

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

    Elimine o projeto

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    O que se segue?