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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem 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. É 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.
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 /add
Onde
- 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 date
A flag
--rm
elimina 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 principal.
-
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 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 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-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.Inicie sessão na CLI gcloud como o utilizador que vai executar os comandos do Docker.
gcloud auth login
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.
Inicie sessão na CLI gcloud como o utilizador que vai executar os comandos do Docker.
gcloud auth login
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 paraquickstart-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.
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
Abra 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 acerca da 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 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.
A 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 CLI Google Cloud para autenticar pedidos para o 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