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
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a 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 gerir segredos:
Função de administrador do Secret Manager (
roles/secretmanager.admin) no projeto - Cloud Shell O
- Cloud Shell é um ambiente de shell para gerir recursos alojados no Google Cloud. É 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.
Aceda à Google Cloud consola.
Clique no botão Ativar Cloud Shell:
.Instale a CLI gcloud. Para atualizar uma instalação existente, execute o comando
gcloud components update.Instale o Docker se ainda não estiver instalado.
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 /addOnde
- DOMAIN é o seu domínio do Windows.
- USERNAME é o seu nome de utilizador.
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.
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 dateA flag
--rmelimina a instância do contentor ao sair.- Inicie sessão no Docker Hub.
- Crie um token de acesso pessoal com autorizações só de leitura.
Copie o token de acesso.
Guarde o token de acesso num ficheiro de texto no seu computador local ou no Cloud Shell.
-
Aceda à página Secret Manager na Google Cloud consola.
-
Na página Secret Manager, clique em Create Secret.
-
Na página Criar secret, em Nome, atribua um nome ao seu secret
my-secret -
No campo Valor secreto, introduza o seu token de acesso pessoal do Docker Hub.
-
Não altere a secção Regiões.
-
Clique no botão Criar segredo.
-
Aceda à página Secret Manager na Google Cloud consola.
-
Na página Secret Manager, clique na caixa de verificação junto a
my-secret. -
Se ainda não estiver aberto, clique em Mostrar painel de informações para o abrir.
-
No painel de informações, clique em Adicionar diretor.
-
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.
-
Clique na lista pendente Selecionar a partir de na parte superior da página.
-
Na janela Selecionar a partir 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.
-
-
No menu pendente Selecionar uma função, escolha Secret Manager e, de seguida, Secret Manager Secret Accessor.
-
Aceda à página Painel de controlo na Google Cloud consola.
-
Clique na lista pendente Selecionar a partir de na parte superior da página.
-
Na janela Selecionar a partir 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.
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 comandogcloud 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-HUBdefine 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.Inicie sessão na CLI gcloud como o utilizador que vai executar os comandos do Docker.
gcloud auth loginPara 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.devO 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.
Inicie sessão na CLI gcloud como o utilizador que vai executar os comandos do Docker.
gcloud auth loginExtraia 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:latestOnde:
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 paraquickstart-docker-hub-remote.latesté a versão da imagem etiquetada que quer obter 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.
Liste os artefactos armazenados no seu repositório remoto:
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remoteO 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:10Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório
quickstart-docker-hub-remote.Clique em Eliminar.
- 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 acerca dos diferentes modos de repositório do Artifact Registry.
- Saiba mais acerca dos repositórios remotos do Artifact Registry.
- Saiba mais sobre a CI/CD.
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 para lhe conceder as seguintes funções do 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 capa
Para concluir este início rápido, use o Cloud Shell ou a shell local.
Iniciar o Cloud Shell
Para iniciar o Cloud Shell, siga estes passos:
É 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:
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
Guarde a sua chave de acesso pessoal num segredo
consola
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
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:
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:
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 Google Cloud CLI para autenticar pedidos ao Artifact Registry.
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
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
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