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
- 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.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Artifact Registry, Secret Manager.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Artifact Registry, Secret Manager.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
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 seu 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 de administrador do Secret Manager (
roles/secretmanager.admin
) no projeto
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:
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 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. 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.
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 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
- 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 seu local ou no Cloud Shell.
Salve seu 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, dê um nome
my-secret
ao 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 secret
Console
-
Acesse a página do Secret Manager no console do 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, 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.
-
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.
-
-
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 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 comandogcloud 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.
Faça login na CLI gcloud como o usuário que executará 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 o repositório remoto
Faça login na CLI gcloud como o usuário que executará 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 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 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.
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
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
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
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.