Crea un repository remoto Docker Hub

Crea un repository remoto che funga da proxy per Docker Hub.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Artifact Registry, Secret Manager.

    Abilita le API

  5. Installa Google Cloud CLI.
  6. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  9. Abilita le API Artifact Registry, Secret Manager.

    Abilita le API

  10. Installa Google Cloud CLI.
  11. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  12. Crea un account Docker Hub.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare un repository remoto Docker Hub, chiedi all'amministratore di concederti i ruoli IAM seguenti:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di 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 tua shell locale.

Cloud Shell
Cloud Shell è un ambiente shell per la gestione delle risorse ospitate su Google Cloud. È preinstallato Docker e Google Cloud CLI, l'interfaccia a riga di comando principale per Google Cloud.
Shell locale
Se preferisci utilizzare la tua shell locale, devi installare Docker e gcloud CLI nel tuo ambiente.

Avviare Cloud Shell

Per avviare Cloud Shell, segui questi passaggi:

  1. Vai alla console Google Cloud.

    Console Google Cloud

  2. Fai clic sul pulsante Attiva Cloud Shell:  .

Si apre una sessione di Cloud Shell all'interno di un frame più in basso nella console. Puoi utilizzare questa shell per eseguire i comandi gcloud.

Configurazione di una shell locale

Per installare gcloud CLI e Docker, esegui questi passaggi:

  1. Installa gcloud CLI. Per aggiornare un'installazione esistente, esegui il comando gcloud components update.

  2. Installa Docker, se non è già installato.

  3. Docker richiede un accesso privilegiato per interagire con i registry. Su Linux o Windows, aggiungi l'utente che utilizzi per eseguire i comandi Docker al gruppo di sicurezza Docker. Questo passaggio non è obbligatorio su macOS poiché Docker Desktop viene eseguito su una macchina virtuale come utente root.

    Linux

    Il gruppo di sicurezza Docker è denominato docker. Per aggiungere il nome utente, esegui questo comando:

    sudo usermod -a -G docker ${USER}
    

    Windows

    Il gruppo di sicurezza Docker è denominato 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.
  4. Esci e accedi di nuovo per applicare le modifiche all'iscrizione al gruppo. Se utilizzi una macchina virtuale, potresti dover riavviare la macchina virtuale affinché le modifiche all'appartenenza abbiano effetto.

  5. Per assicurarti che Docker sia in esecuzione, esegui il comando Docker seguente, che restituisce la data e l'ora attuali:

    docker run --rm busybox date
    

    Il flag --rm elimina l'istanza di container all'uscita.

Configura l'autenticazione Docker Hub

Per impedire l'utilizzo della quota Docker Hub non autenticata, ti consigliamo di eseguire l'autenticazione su Docker Hub quando utilizzi repository remoti. I repository remoti ti consentono di aggiungere il tuo nome utente Docker Hub e un token di accesso personale salvato come secret per l'autenticazione in Docker Hub.

crea un token di accesso personale per Docker Hub

  1. Accedi a Docker Hub.
  2. Crea un token di accesso personale con autorizzazioni di sola lettura.
  3. Copia il token di accesso.

  4. Salva il token di accesso in un file di testo nel tuo locale o in Cloud Shell.

Salva il token di accesso personale in un secret

console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai alla pagina di Secret Manager

  2. Nella pagina Secret Manager, fai clic su Crea secret.

  3. Nella pagina Crea secret, in Nome, assegna al secret il nome my-secret.

  4. Nel campo Valore secret, inserisci il token di accesso personale Docker Hub.

  5. Lascia invariata la sezione Regioni.

  6. 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 tuo token di accesso personale.

Concedi all'account di servizio Artifact Registry l'accesso al tuo secret

console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai alla pagina di Secret Manager

  2. Nella pagina Secret Manager, fai clic sulla casella di controllo accanto a my-secret.

  3. Se non è già aperto, fai clic su Mostra riquadro informazioni per aprirlo.

  4. Nel riquadro delle informazioni, fai clic su Aggiungi entità.

  5. Nell'area di testo Nuove entità, inserisci l'indirizzo email dell'account di servizio Artifact Registry. L'indirizzo email dell'account di servizio di 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.

      Vai alla pagina Dashboard

    • Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina.

    • Nella finestra Seleziona da visualizzata, scegli il tuo progetto.

      L'ID e il numero del progetto sono visualizzati nella scheda Informazioni sul progetto della dashboard del progetto.

  6. Nel menu a discesa Seleziona un ruolo, scegli Secret Manager e poi Secret Manager (Accessore di accesso ai secret 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 progetto:

  • Vai alla pagina Dashboard nella console Google Cloud.

    Vai alla pagina Dashboard

  • Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina.

  • Nella finestra Seleziona da visualizzata, scegli il tuo progetto.

    L'ID e il numero del progetto sono visualizzati nella scheda Informazioni sul progetto della dashboard del progetto.

Crea un repository remoto

Crea un repository remoto di Artifact Registry denominato quickstart-docker-hub-remote nella località us-central1 con le tue credenziali 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 ogni località del repository in un progetto, i nomi dei repository devono essere univoci.
  • PROJECT_ID è l'ID progetto. Se questo flag viene omesso, viene usato il progetto attuale o predefinito.
  • us-central1 è la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore predefinito. Per visualizzare un elenco delle località supportate, esegui il comando gcloud artifacts locations list.
  • "Remote Docker repository" è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.
  • "Docker Hub" è la descrizione facoltativa per la configurazione del repository esterno.
  • DOCKER-HUB imposta il repository remoto a monte verso l'upstream pubblico del Docker Hub.
  • USERNAME è il tuo nome utente Docker Hub.
  • projects/PROJECT/secrets/my-secret/versions/1 è la versione del secret creata 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.

  1. Accedi a gcloud CLI con le credenziali dell'utente che eseguirà i comandi Docker.

    gcloud auth login
    
  2. Per configurare l'autenticazione per i repository Docker nella regione us-central1, esegui questo comando:

    gcloud auth configure-docker us-central1-docker.pkg.dev
    

    Il comando aggiorna la configurazione Docker. Ora puoi connetterti ad Artifact Registry nel tuo progetto Google Cloud per eseguire il push e il pull delle immagini.

Per informazioni su altri metodi di autenticazione, vedi Metodi di autenticazione.

Esegui il pull di un'immagine nel repository remoto

  1. Accedi a gcloud CLI con le credenziali dell'utente che eseguirà i comandi Docker.

    gcloud auth login
    
  2. 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 creato.
    • PROJECT è il tuo ID progetto Google Cloud. Se l'ID progetto contiene i due punti (:), consulta Progetti con ambito di 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 Hub in quickstart-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 esegui di nuovo il pull della stessa immagine con tag, questa verrà estratta dal repository remoto. Sono utilizzate le credenziali Docker Hub.

  3. Elenca gli artefatti archiviati nel 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 relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

Elimina il repository

Se vuoi mantenere il progetto ed eliminare solo la risorsa repository, segui i passaggi descritti in questa sezione. Se vuoi eliminare l'intero progetto, segui i passaggi descritti 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

  1. Apri la pagina Repositories nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository quickstart-docker-hub-remote.

  3. 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

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi