Il push (caricamento) e il pull (download) delle immagini sono due dei metodi più comuni Attività di Container Registry. Questo documento è incentrato su come push e pull con Docker.
Se utilizzi Cloud Build, controlla Documentazione di Cloud Build per informazioni sulla creazione e il push di container in Container Registry.
Per istruzioni su come elencare, taggare ed eliminare immagini, consulta Gestione delle immagini.
Prima di iniziare
Assicurati di avere:
Abilitare Container Registry nel progetto.
Aggiunta di un registro
Puoi aggiungere i seguenti registri di Container Registry a un progetto:
Nome host | Località di archiviazione |
---|---|
gcr.io |
Archivia immagini nei data center negli Stati Uniti |
asia.gcr.io |
Archivia immagini nei data center in Asia |
eu.gcr.io |
Archivia immagini nei data center all'interno degli stati membri dell'Unione Europea |
us.gcr.io |
Archivia immagini nei data center negli Stati Uniti |
Il primo push di un'immagine a un nome host attiva la creazione del registro in di un progetto e del bucket Cloud Storage corrispondente. Questo push iniziale richiede autorizzazioni a livello di progetto per creare bucket di archiviazione.
Quando esiste un host del registro nel progetto, puoi configurare le autorizzazioni sul bucket Cloud Storage per controllare l'accesso alle immagini nel registro.
Per aggiungere un registro e configurare le autorizzazioni:
Verifica di disporre delle autorizzazioni richieste. Devi disporre dei Ruolo Storage Admin (roles/storage.admin) o un ruolo personalizzato o un ruolo predefinito con le stesse autorizzazioni.
Per istruzioni su come concedere il ruolo Amministratore Storage a livello di progetto, consulta la documentazione IAM.
Esegui il push di un'immagine iniziale sull'host. Ad esempio, i seguenti comandi:
- Esegui il pull dell'immagine
busybox
da Docker Hub - Contrassegna l'immagine con il percorso di destinazione in Container Registry, includendo
l'host del registry
gcr.io
e ID progettomy-project
- esegui il push dell'immagine nel registry
docker pull busybox docker tag busybox gcr.io/my-project/busybox docker push gcr.io/my-project/busybox
- Esegui il pull dell'immagine
Container Registry aggiunge il registro al progetto, crea uno spazio di archiviazione bucket per il registry e archivia l'immagine.
Ora puoi configurare il controllo dell'accesso nello spazio di archiviazione del Registro di sistema. per concedere l'accesso al registro ad altri utenti.
Push di un'immagine a un registry
Per eseguire il push di qualsiasi immagine locale in Container Registry utilizzando Docker o un altro di terze parti, devi prima contrassegnarlo con il nome del registry ed eseguire il push dell'immagine.
I seguenti fattori potrebbero influire sui caricamenti di immagini di grandi dimensioni:
- Tempo di caricamento
- Qualsiasi richiesta inviata a Container Registry ha un limite di timeout di 2 ore. Se eseguire l'autenticazione in Container Registry utilizzando un token di accesso, il token scade dopo 60 minuti. Se prevedi che il tempo di caricamento supererà i 60 minuti, utilizza un metodo di autenticazione diverso.
- Dimensioni dell'immagine
- Container Registry utilizza Cloud Storage per i l'archiviazione sottostante. Quote e limiti di Cloud Storage applicabili a ciascun registro, inclusa la dimensione massima di 5 TB per un oggetto archiviazione.
- Container Registry non supporta i caricamenti a blocchi Docker. Alcuni strumenti supportano il caricamento di immagini di grandi dimensioni tramite caricamenti a blocchi o un un singolo caricamento monolitico. Devi utilizzare caricamenti monolitici per eseguire il push delle immagini e Container Registry.
Autorizzazioni obbligatorie
Il push di un'immagine richiede una delle seguenti opzioni Ruoli di Cloud Storage o un ruolo con le stesse autorizzazioni:
- Push della prima immagine in un registro del progetto
Ruolo: Amministratore archiviazione (roles/storage.admin) a livello di progetto Google Cloud. Il ruolo Proprietario predefinito include queste autorizzazioni.
La prima volta che esegui il push di un'immagine a un host del registro nel tuo progetto (ad esempio
gcr.io
), Container Registry crea un bucket di archiviazione per registro di sistema. Il ruolo Amministratore Storage dispone delle autorizzazioni necessarie per creare del bucket Cloud Storage.- Eseguire il push delle immagini in un registry esistente nel progetto
Ruolo: Writer bucket legacy Storage (roles/storage.legacyBucketWriter) nella di archiviazione del registry.
Questo ruolo dispone delle autorizzazioni per eseguire il push e il pull delle immagini per gli host del registro esistenti nel tuo progetto. Ad esempio, se il progetto contiene solo
gcr.io
, un utente con il ruolo Writer bucket legacy Storage può eseguire il push delle immaginigcr.io
ma non può eseguire il push delle immagini aasia.gcr.io
.
Per informazioni sulla concessione delle autorizzazioni a un registry, vedi Configurazione del controllo dell'accesso.
Contrassegna l'immagine locale con il nome del registro
Per taggare un'immagine:
- Verifica di aver configurato l'autenticazione su e Container Registry.
Determina il nome dell'immagine in Container Registry:
Scegli un nome host che specifichi la posizione in cui memorizzerai l'immagine.
gcr.io
ospita immagini nei data center negli Stati Uniti, ma la località potrebbe cambiare in futurous.gcr.io
ospita immagini nei data center negli Stati Uniti, in una bucket di archiviazione separato dalle immagini ospitate dagcr.io
eu.gcr.io
ospita le immagini nell'Unione Europeaasia.gcr.io
ospita immagini nei data center in Asia
Queste località corrispondono alle regioni con più sedi per i bucket di archiviazione Cloud Storage. Quando esegui il push di un'immagine in un registry con un nuovo nome host, Container Registry crea un bucket di archiviazione nella regione multipla specificata. Questo bucket è lo spazio di archiviazione sottostante per il registro. All'interno di un progetto, tutti i registri con lo stesso nome host condividono in un bucket Cloud Storage.
Nella console, lo stato della password verrà indicato sotto Località.
Scegli un nome per l'immagine di destinazione, che può essere diverso dal nome dell'immagine sul computer locale. Ad esempio, l'immagine locale potrebbe essere
web-image
, ma vuoi archiviarlo in Container Registry comeweb-site
Combina il nome host, l'ID progetto della console Google Cloud e il nome dell'immagine di destinazione:
HOSTNAME/PROJECT-ID/TARGET-IMAGE
Considera il seguente esempio:
- Nome host:
gcr.io
- Progetto Google Cloud:
my-project
- Nome immagine di destinazione:
web-site
La combinazione del nome host, del progetto e dell'immagine di destinazione fornisce il percorso completo dell'immagine da utilizzare per il tagging:
gcr.io/my-project/web-site
Se l'ID progetto contiene i due punti (
:
), consulta Progetti con ambito dominio.- Nome host:
Tagga l'immagine locale con il nome del passaggio precedente. Se vuoi etichettare questa versione dell'immagine con un tag, includi il nome del tag.
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG
Sostituisci quanto segue:
- SOURCE_IMAGE è il nome o l'ID immagine locale dell'immagine.
- HOSTNAME è l'host del registry che hai scelto nel passaggio 2.
- PROJECT è l'ID del progetto Google Cloud.
- TARGET-IMAGE è il nome dell'immagine quando è archiviata e Container Registry.
- TAG è il tag da associare a questa versione dell'immagine.
Ad esempio, questo comando tagga l'immagine locale
web-image
comegcr.io/my-project/web-site
in Container Registry con il tagv1.5
docker tag web-image gcr.io/my-project/web-site:v1.5
Se non specifichi nessun tag, Docker aggiunge il tag
latest
predefinito. Dal giornolatest
è un tag predefinito e rappresenta la versione dell'immagine più recente con il taglatest
e non necessariamente la versione più recente di un dell'immagine.
Docker contrassegna l'immagine con il nome e il tag dell'immagine specificati nel comando.
esegui il push dell'immagine con tag in Container Registry
Verifica di aver configurato l'autenticazione su e Container Registry.
Esegui il push dell'immagine con tag in Container Registry:
Esegui questo comando per eseguire il push di un'immagine con un tag specifico:
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
Se ometti
:TAG
, Docker esegue il push della versione dell'immagine contrassegnato conlatest
.Ad esempio, questo comando esegue il push dell'immagine
gcr.io/my-project/web-site
con con il tagv1.5
:docker push gcr.io/my-project/web-site:v1.5
Quando esegui il push di un'immagine in un host del registro che non esiste ancora progetto, Container Registry crea un bucket di archiviazione per l'host del registro.
Per visualizzare l'immagine che hai eseguito push:
Vai alla console Google Cloud per visualizzare un registro di sistema e un'immagine.
Esegui
gcloud container images list-tags
per visualizzare il tag immagine e il digest generato automaticamente:gcloud container images list-tags HOSTNAME/PROJECT-ID/IMAGE
L'output del comando è simile al seguente:
DIGEST TAGS TIMESTAMP 44bde... test 2017-..-..
Pull delle immagini da un registro
Per estrarre un'immagine è necessario il ruolo Visualizzatore oggetti archiviazione per il bucket di archiviazione del registry o un ruolo con le stesse autorizzazioni.
Per eseguire il pull da Container Registry, utilizza il comando:
docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG
o
docker pull HOSTNAME/PROJECT-ID/IMAGE@IMAGE_DIGEST
dove:
- HOSTNAME è elencato in Località nella console. Si tratta di una delle quattro opzioni:
gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
. - PROJECT-ID è la tua console Google Cloud
ID progetto.
Se l'ID progetto contiene i due punti (
:
), consulta Progetti con ambito dominio. - IMAGE è il nome dell'immagine in Container Registry.
- TAG è il tag applicato all'immagine. In un registro, i tag sono univoci un'immagine.
- IMAGE_DIGEST è il valore hash sha256 dei contenuti dell'immagine. Nel Console Google Cloud, fai clic sul menu dell'immagine per visualizzarne i metadati. Il digest è indicato come Digest immagine.
Per ottenere il comando pull per un'immagine specifica:
Fai clic sul nome di un'immagine per accedere al registro specifico.
Nel Registro di sistema, seleziona la casella accanto alla versione dell'immagine che vuoi estrarre.
Fai clic su MOSTRA COMANDO DI PULL nella parte superiore della pagina.
Copia il comando pull, che identifica l'immagine utilizzando il tag o il digest.
Passaggi successivi
- Informazioni su gestione delle immagini, inclusa l'aggiunta o la rimozione di tag ed eliminazione delle immagini.
- Informazioni su configurazione del controllo degli accessi.
- Scopri di più su Componenti e funzionalità di Container Registry.
- Se vuoi eseguire container su Compute Engine, scopri di più container su Compute Engine.