Criar um repositório remoto do Docker Hub
Crie um repositório remoto para atuar como um proxy do 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
-
Install the Google Cloud CLI.
-
Se você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
-
Install the Google Cloud CLI.
-
Se você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Crie uma conta do Docker Hub.
-
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:
Função de administrador do Secret Manager (
roles/secretmanager.admin
) no projeto - Cloud Shell O
- Cloud Shell é um ambiente 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 ambiente.
Acesse o console do Google Cloud .
Clique no botão Ativar o Cloud Shell:
.
Instale a CLI da gcloud. Para atualizar uma instalação atual, 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 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.
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.- Faça login no Docker Hub.
- Crie um token de acesso pessoal com permissões de somente leitura.
Copie o token de acesso.
Salve o token de acesso em um arquivo de texto no seu computador local ou no Cloud Shell.
-
Acesse a página Secret Manager no console 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.
-
Acesse a página Secret Manager no console Google Cloud .
-
Na página Secret Manager, 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 principais, 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 Google Cloud .
-
Clique na lista suspensa Selecionar de na parte superior da página.
-
Na janela Selecionar de, escolha seu projeto.
O ID e o número do projeto são exibidos no card Informações do projeto do painel.
-
-
Na lista suspensa Selecionar um papel, escolha Secret Manager e depois Acessador de secrets do Secret Manager.
-
Acesse a página Painel no console Google Cloud .
-
Clique na lista suspensa Selecionar de na parte superior da página.
-
Na janela Selecionar de, escolha seu projeto.
O ID e o número do projeto são exibidos no card Informações do projeto do painel.
quickstart-docker-hub-remote
é o nome do repositório. 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 compatíveis, 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 da configuração do repositório externo para este repositório remoto.DOCKER-HUB
define o repositório remoto upstream como 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.Faça login na CLI gcloud 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 seu projeto Google Cloud para enviar e extrair imagens.
Faça login na CLI gcloud como o usuário que vai executar os comandos do Docker.
gcloud auth login
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 Google Cloud
ID do projeto.
Se o ID do projeto contiver 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 com uma 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 são usadas.
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
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.
- 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.
- 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.
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 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.
Como iniciar o Cloud Shell
Para iniciar o Cloud Shell, execute os seguintes passos:
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, siga estas etapas:
Configurar a autenticação do Docker Hub
Para evitar o uso de uma cota não autenticada do Docker Hub, recomendamos fazer a autenticação no Docker Hub ao usar repositórios remotos. Com os repositórios remotos, é possível adicionar 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
Salvar seu token de acesso pessoal em um secret
Console
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
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:
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:
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.
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
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Excluir o repositório
Se você quiser manter o projeto e excluir apenas o recurso do repositório, siga as etapas desta seção. Se você 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
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