Crea un repository remoto Docker Hub
Crea un repository remoto che funga da proxy per Docker Hub.
Prima di iniziare
- 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
- Crea un account Docker Hub.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare un repository remoto di Docker Hub: chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Per creare repository remoti e concedere l'accesso a singoli repository:
Amministratore Artifact Registry (
roles/artifactregistry.admin
) del progetto -
Per creare e gestire i secret:
Ruolo Amministratore Secret Manager (
roles/secretmanager.admin
) nel progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Scegli una shell
Per completare questa guida rapida, utilizza Cloud Shell o la shell locale.
- Cloud Shell
- Cloud Shell è un ambiente shell per la gestione delle risorse ospitate su Google Cloud. Sono preinstallati con Docker e Google Cloud CLI, l'interfaccia a interfaccia a riga di comando per Google Cloud.
- Shell locale
- Se preferisci utilizzare la shell locale, devi installare Docker e gcloud CLI nel tuo ambiente.
Avviare Cloud Shell
Per avviare Cloud Shell, segui questi passaggi:
Vai alla console Google Cloud.
Fai clic sul pulsante Attiva Cloud Shell: .
Si apre una sessione di Cloud Shell all'interno di un frame più in basso nella console.
Utilizzerai questa shell per eseguire i comandi gcloud
.
Configurazione di una shell locale
Per installare gcloud CLI e Docker, segui questi passaggi:
Installa l'interfaccia a riga di comando gcloud. Per aggiornare un modello esistente, esegui il comando
gcloud components update
.Installa Docker, se non è già installato.
Docker richiede l'accesso con privilegi per interagire con i registri. Su Linux o Windows, aggiungi l'utente che utilizzi per eseguire i comandi Docker al gruppo di sicurezza Docker. Questo passaggio non è necessario su macOS perché Docker Desktop viene eseguito su una macchina virtuale come utente root.
Linux
Il gruppo di sicurezza Docker si chiama
docker
. Per aggiungere il tuo nome utente, esegui questo comando:sudo usermod -a -G docker ${USER}
Windows
Il gruppo di sicurezza Docker si chiama
docker-users
. Per aggiungere un utente dal prompt dei comandi dell'amministratore, esegui questo comando :net localgroup docker-users DOMAIN\USERNAME /add
Dove
- DOMAIN è il tuo dominio Windows.
- USERNAME è il tuo nome utente.
Esci e accedi nuovamente per rendere effettive le modifiche di appartenenza al gruppo. Se utilizzi una macchina virtuale, potrebbe essere necessario riavviare per rendere effettive le modifiche all'appartenenza.
Per assicurarti che Docker sia in esecuzione, esegui questo comando Docker, che restituisce la data e l'ora correnti:
docker run --rm busybox date
Il flag
--rm
elimina l'istanza di container all'uscita.
Configurare l'autenticazione di Docker Hub
Per impedire l'utilizzo della quota Docker Hub non autenticata, ti consigliamo di autenticarti su Docker Hub quando utilizzi i repository remoti. Repository remoti puoi aggiungere il tuo nome utente Docker Hub e un token di accesso personale salvato un secret per eseguire l'autenticazione in Docker Hub.
Crea un token di accesso personale Docker Hub
- Accedi a Docker Hub.
- Crea un token di accesso personale con autorizzazioni di sola lettura.
Copia il token di accesso.
Salva il token di accesso in un file di testo nel tuo locale o in Cloud Shell.
Salva il tuo token di accesso personale in un segreto
console
-
Vai alla pagina Secret Manager nella console Google Cloud.
-
Nella pagina Secret Manager, fai clic su Crea secret.
-
Nella pagina Crea secret, in Nome, assegna al secret il nome
my-secret
. -
Nel campo Valore secret, inserisci il tuo token di accesso personale Docker Hub.
-
Non modificare la sezione Regioni.
-
Fai clic sul pulsante Crea secret.
Interfaccia a riga di comando gcloud
gcloud secrets create my-secret --data-file="/path/to/file.txt"
dove /path/to/file.txt
è la posizione del file di testo con il token di accesso personale.
Concedi all'account di servizio Artifact Registry l'accesso al tuo segreto
console
-
Vai alla pagina Secret Manager nella console Google Cloud.
-
Nella pagina Secret Manager, fai clic sulla casella di controllo accanto a
my-secret
. -
Se non è già aperto, fai clic su Mostra riquadro informazioni per aprirlo.
-
Nel riquadro delle informazioni, fai clic su Aggiungi entità.
-
Nell'area di testo Nuove entità, inserisci l'indirizzo email dell'account di servizio Artifact Registry. L'indirizzo email dell'account di servizio Artifact Registry è formattato nel seguente modo
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
dove PROJECT-NUMBER è il numero del progetto.
Per trovare il numero del progetto:
-
Vai alla pagina Dashboard nella console Google Cloud.
-
Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina.
-
Nella finestra Seleziona da visualizzata, seleziona il tuo progetto.
L'ID progetto e il numero di progetto vengono visualizzati nella scheda Informazioni sul progetto della dashboard del progetto.
-
-
Nel menu a discesa Seleziona un ruolo, scegli Secret Manager e poi Accesso ai segreti di Secret Manager.
Interfaccia a riga di comando gcloud
gcloud secrets add-iam-policy-binding my-secret \ --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
dove PROJECT-NUMBER è il numero del progetto.
Per trovare il numero del tuo progetto:
-
Vai alla pagina Dashboard nella console Google Cloud.
-
Nella parte superiore della pagina, fai clic sull'elenco a discesa Seleziona da.
-
Nella finestra Seleziona da visualizzata, seleziona il tuo progetto.
L'ID progetto e il numero di progetto vengono visualizzati nella scheda Informazioni sul progetto della dashboard del progetto.
Crea un repository remoto
Crea un repository remoto Artifact Registry denominato
quickstart-docker-hub-remote
nella località us-central1
con il tuo Docker Hub
eseguendo questo 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
Dove:
quickstart-docker-hub-remote
è il nome del repository. Per per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
è l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.us-central1
è la posizione regionale o multiregionale del repository. Puoi ometti questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
."Remote Docker repository"
è la descrizione facoltativa del repository. Non includere dati sensibili perché le descrizioni dei repository non sono criptato."Docker Hub"
è la descrizione facoltativa per la configurazione del repository esterno per questo repository remoto.DOCKER-HUB
imposta il repository remoto a monte del Docker Hub pubblico.- USERNAME è il tuo nome utente Docker Hub.
projects/PROJECT/secrets/my-secret/versions/1
è la versione del secret che hai creato per archiviare il token di accesso personale di Docker Hub.
Artifact Registry crea il repository e lo aggiunge all'elenco dei repository.
Configura l'autenticazione Docker
Prima di eseguire il push o il pull delle immagini, configura Docker in modo che utilizzi Google Cloud CLI per autenticare le richieste ad Artifact Registry.
Accedi a gcloud CLI come l'utente che eseguirà i comandi Docker.
gcloud auth login
Per configurare l'autenticazione nei repository Docker della regione
us-central1
, esegui il seguente comando:gcloud auth configure-docker us-central1-docker.pkg.dev
Il comando aggiorna la configurazione Docker. Ora puoi connetterti a Artifact Registry nel tuo progetto Google Cloud per eseguire il push e il pull delle immagini.
Per informazioni su altri metodi di autenticazione, consulta Metodi di autenticazione.
Esegui il pull di un'immagine nel repository remoto
Accedi a gcloud CLI come utente che eseguirà i comandi Docker.
gcloud auth login
Esegui il pull di un'immagine da Docker Hub sulla tua macchina e nel tuo repository remoto con il seguente comando:
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latest
Dove:
us-central1
è la posizione del repository remoto.us-central1-docker.pkg.dev
è il nome host del repository Docker che hai creato.- PROJECT è il tuo account Google Cloud
ID progetto.
Se l'ID progetto contiene due punti (
:
), consulta Progetti basati sul dominio. quickstart-docker-hub-remote
è l'ID del repository che hai creato.busybox
è il nome dell'immagine di cui vuoi eseguire il pull da Docker Hubquickstart-docker-hub-remote
.latest
è la versione dell'immagine con tag di cui vuoi eseguire il pull da Docker Hub.
L'immagine viene estratta sulla macchina e memorizzata nella cache nel repository remoto. Se estrai di nuovo la stessa immagine con tag, questa verrà estratta dal tuo repository remoto. Vengono utilizzate le tue credenziali Docker Hub.
Elenca gli artefatti archiviati nel tuo repository remoto:
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remote
L'output è simile al seguente:
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
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.
Elimina il repository
Se vuoi conservare il progetto ed eliminare solo la risorsa del repository, segui i passaggi riportati in questa sezione. Se vuoi eliminare l'intero progetto: i passaggi in Eliminare il progetto
Prima di rimuovere il repository, assicurati che tutte le immagini che vuoi conservare siano disponibili in un'altra posizione.
Per eliminare il repository:
Console
Apri la pagina Repository nella console Google Cloud.
Nell'elenco dei repository, seleziona il repository
quickstart-docker-hub-remote
.Fai clic su Elimina.
gcloud
Per eliminare il repository quickstart-docker-hub-remote
, esegui questo comando:
gcloud artifacts repositories delete quickstart-docker-hub-remote \ --location=us-central1
Elimina il progetto
- 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.
Passaggi successivi
- Scopri le diverse modalità del repository di Artifact Registry.
- Scopri di più sui repository remoti di Artifact Registry.
- Scopri di più su CI/CD.