Criar 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 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 administrador para conceder a você os seguintes papéis do IAM:
-
Para criar repositórios remotos e conceder acesso a repositórios individuais:
Administrador do Artifact Registry (
roles/artifactregistry.admin
) no projeto -
Para criar e gerenciar secrets:
Papel Administrador do Secret Manager (
roles/secretmanager.admin
) no projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de 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 CLI do Google Cloud, a interface de linha de comando principal do Google Cloud.
- Shell local
- Se preferir usar seu shell local, instale o Docker e CLI gcloud no seu ambiente.
Como iniciar o Cloud Shell
Para iniciar o Cloud Shell, execute os seguintes passos:
Acesse o Console do Google Cloud.
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:
Instale a CLI da gcloud. Para atualizar um execute o comando
gcloud components update
.Instale o Docker se ele ainda não estiver instalado.
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. Esta etapa não é necessária no macOS, porque O Docker Desktop é executado em uma máquina virtual como 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.
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;
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 uma cota não autenticada do Docker Hub, 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
- Faça login no Docker Hub.
- Crie um token de acesso pessoal com permissões somente leitura.
Copie o token de acesso.
Salve o token de acesso em um arquivo de texto no local ou no Cloud Shell.
Salvar o token de acesso pessoal em um secret
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página Gerenciador de secrets, clique em Criar secret.
-
Na página Criar secret, em Nome, nomeie o secret como
my-secret
. -
No campo Valor do secret, insira seu token de acesso pessoal do Docker Hub.
-
Deixe a seção Regiões inalterada.
-
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 seu secret
Console
-
Acesse a página do Secret Manager no console do Google Cloud:
-
Na página do Gerenciador de secrets, clique na caixa de seleção ao lado de
my-secret
. -
Se ela ainda não estiver aberta, clique em Mostrar painel de informações para abrir o painel.
-
No painel de informações, clique em Adicionar participante.
-
Na área de texto Novos participantes, insira 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.
-
Clique na lista suspensa Selecionar de na parte superior da página.
-
Na janela Selecionar de exibida, selecione seu projeto.
O ID e o número do projeto são exibidos no card Informações do projeto no painel.
-
-
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.
-
Clique na lista suspensa Selecionar de na parte superior da página.
-
Na janela Selecionar de exibida, selecione seu projeto.
O ID e o número do projeto são exibidos no card Informações do projeto do Painel.
Criar um repositório remoto
Crie um repositório remoto do Artifact Registry com o nome
quickstart-docker-hub-remote
no local us-central1
usando 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. Para para cada local de repositório em um projeto, os nomes dos repositórios 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 ver uma lista de locais com suporte, execute o comandogcloud artifacts locations list
."Remote Docker repository"
é a descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas."Docker Hub"
é a descrição opcional de a configuração do repositório externo para este repositório remoto.DOCKER-HUB
define o repositório remoto upstream para o Docker Hub público upstream.- USERNAME é seu nome de usuário do Docker Hub;
projects/PROJECT/secrets/my-secret/versions/1
é a versão secreta que você criou para armazenar seu 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 A Google Cloud CLI para autenticar solicitações ao Artifact Registry.
Faça login na gcloud CLI como o usuário que vai executar os comandos do Docker.
gcloud auth login
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 seu repositório remoto
Faça login na gcloud CLI como o usuário que vai executar os comandos do Docker.
gcloud auth login
Extrair uma imagem do Docker Hub para sua máquina e para o controle 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 paraquickstart-docker-hub-remote
.latest
é a versão da imagem marcada que você quer extrair do Docker Hub.
A imagem é enviada para sua máquina e armazenada em cache no repositório remoto. Se você extrair a mesma imagem com tag novamente, ela será extraída do controle remoto repositório de dados. Suas credenciais do Docker Hub são usadas.
Liste os artefatos armazenados no 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 conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Excluir seu repositório
Se você quiser manter seu projeto e excluir apenas o recurso do repositório, siga as etapas desta seção. Se quiser excluir todo o projeto, 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
Abra a página Repositórios no console do Google Cloud.
Na lista de repositórios, selecione o repositório
quickstart-docker-hub-remote
.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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
A seguir
- Leia sobre os diferentes modos de repositório do Artifact Registry.
- Saiba mais sobre os repositórios remotos do Artifact Registry.
- Saiba mais sobre CI/CD.