Panoramica di Container Registry

Container Registry è il servizio legacy per l'archiviazione di immagini container private su Google Cloud.

Il servizio è ritirato. Puoi spostare le tue immagini esistenti in Artifact Registry e continuare ad accedervi utilizzando il dominio gcr.io. A partire dal 15 maggio 2024, i progetti senza precedente utilizzo di Container Registry ospiteranno in Artifact Registry solo le immagini per il dominio gcr.io.

Per un confronto tra Container Registry e Artifact Registry e per informazioni sulla transizione da Container Registry ad Artifact Registry, consulta Transizione da Container Registry.

Utilizzo delle immagini

Molte persone utilizzano Docker Hub come registro centrale per l'archiviazione delle immagini Docker pubbliche, ma per controllare l'accesso alle immagini devi utilizzare un registro privato come Artifact Registry o Container Registry.

Puoi accedere al registro tramite endpoint HTTPS sicuri, che consentono di eseguire il push, il pull e la gestione delle immagini da qualsiasi sistema, istanza VM o hardware.

Registri

Con Container Registry puoi creare fino a quattro host multiregionali in ogni progetto Google Cloud. Se vuoi creare repository più discreti con criteri di accesso separati o archiviare immagini in regioni anziché in regioni multiple, utilizza invece Artifact Registry.

I registri di Container Registry vengono denominati in base all'host e all'ID progetto. Per lavorare con le immagini (ad esempio push, pull, elimina), identifica l'immagine utilizzando il seguente formato:

HOSTNAME/PROJECT-ID/IMAGE:TAG

o

HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST

dove:

  • HOSTNAME è la posizione in cui viene archiviata l'immagine:

    • Attualmente gcr.io ospita le immagini negli Stati Uniti, ma la località potrebbe cambiare in futuro
    • us.gcr.io ospita l'immagine negli Stati Uniti, in un bucket di archiviazione separato dalle immagini ospitate da gcr.io
    • eu.gcr.io ospita le immagini all'interno degli stati membri dell'Unione Europea
    • asia.gcr.io ospita le immagini in Asia

    Queste località corrispondono a più regioni per i bucket di archiviazione di Cloud Storage. Quando esegui il push di un'immagine in un registro con un nuovo nome host, Container Registry crea un bucket di archiviazione nella località multiregionale specificata. Questo bucket è lo spazio di archiviazione sottostante per il registry. All'interno di un progetto, tutti i registry con lo stesso nome host condividono un bucket di archiviazione.

  • PROJECT-ID è l'ID progetto della console Google Cloud. Se l'ID progetto contiene i due punti (:), consulta la sezione Progetti con ambito di dominio di seguito.

  • IMAGE è il nome dell'immagine. Può essere diverso dal nome locale dell'immagine. Nella console Google Cloud, i registri del progetto sono elencati per nome dell'immagine. Ogni repository può contenere più immagini con lo stesso nome. Ad esempio, può contenere diverse versioni di un'immagine chiamata "my-image".

  • l'aggiunta di :TAG o @IMAGE-DIGEST alla fine ti consente di distinguere una versione specifica dell'immagine, ma è facoltativa. Se non specifichi un tag o il digest, Container Registry cerca l'immagine con il tag predefinito latest. Consulta la sezione Versioni delle immagini all'interno di un registro di seguito.

Per l'immagine my-image nel registro gcr.io/PROJECT-ID, utilizza questo formato per eseguire il push o il pull di un'immagine:

gcr.io/PROJECT-ID/my-image:tag1

dove PROJECT-ID è l'ID progetto della console Google Cloud.

Organizzazione delle immagini con i repository

Puoi raggruppare le immagini correlate in un repository all'interno di un registro. Quando esegui il tag, il push o il pull di un'immagine, devi specificare il nome del repository sotto il progetto nel percorso dell'immagine.

In Container Registry, i repository sono un aiuto per l'organizzazione. Agiscono come cartelle logiche nel percorso dell'immagine, ma non riflettono la struttura effettiva del file system o supportano controllo dell'accesso più granulare.

Considera le seguenti immagini archiviate nell'host us.gcr.io nel progetto builds:

us.gcr.io/builds/product1/dev/product1-app:beta-2.0
us.gcr.io/builds/product1/stable/product1:1.0
us.gcr.io/builds/product2/dev/product2:alpha
us.gcr.io/builds/product2/stable/product2:1.0

Se un utente ha accesso in scrittura all'host us.gcr.io nel progetto builds, avrà accesso in scrittura a qualsiasi percorso in us.gcr.io/builds perché tutte le immagini si trovano nello stesso bucket di archiviazione e non puoi limitare l'accesso a livello di repository o immagine.

Se hai bisogno di controllo dell'accesso più granulare, puoi utilizzare Artifact Registry. In Artifact Registry, i repository sono risorse discrete, quindi puoi applicare criteri IAM separati ai repository come us-docker.pkg.dev/builds/product1 e us-docker.pkg.dev/builds/product2.

Versioni di immagini all'interno di un registro

Un registro può contenere molte immagini, che possono avere versioni diverse. Per identificare una versione specifica dell'immagine all'interno di un registro, puoi specificare il digest o il tag immagine.

  • I tag fungono da etichetta. Puoi applicare più tag a un'immagine. Ad esempio, un'immagine potrebbe avere il tag v1.5 per un numero di versione e release-candidate per indicare l'idoneità per il test finale.
  • I digest vengono generati automaticamente, sono univoci per una versione di un'immagine e hanno il formato @IMAGE-DIGEST, dove IMAGE-DIGEST è il valore hash sha256 dei contenuti dell'immagine.

Per identificare una versione specifica dell'immagine my-image:

  • aggiungi il tag immagine:

    gcr.io/PROJECT-ID/my-image:tag1
    
  • oppure aggiungi il digest dell'immagine:

    gcr.io/PROJECT-ID/my-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

dove PROJECT-ID è l'ID progetto della console Google Cloud. Se l'ID progetto contiene i due punti (:), consulta la sezione Progetti con ambito di dominio di seguito.

Nella schermata Immagini della console Google Cloud, la colonna Tag elenca i tag dell'immagine. Fai clic sulla versione dell'immagine per visualizzare i metadati, incluso il Sintesi dell'immagine.

Per informazioni su come modificare i tag, consulta la sezione Tagging delle immagini.

Progetti con ambito di dominio

Se il progetto ha come ambito il tuo dominio, l'ID progetto include il nome del dominio seguito dai due punti (:). Per via del modo in cui Docker tratta i due punti, devi sostituire i due punti con una barra quando specifichi un digest immagine in Container Registry. Identifica le immagini in questi tipi di progetti utilizzando il seguente formato:

HOSTNAME/[DOMAIN]/[PROJECT]/IMAGE

Ad esempio, il progetto con ID example.com:my-project potrebbe avere la seguente immagine:

gcr.io/example.com/my-project/image-name

Nomi di registro come URL

L'URL https://HOSTNAME/PROJECT-ID/IMAGE è l'URL di un'immagine nella console Google Cloud. Qualsiasi utente autenticato che dispone dell'autorizzazione per accedere all'host del registro può utilizzare i link per visualizzare le immagini archiviate. Per maggiori dettagli sul formato del percorso dell'immagine, consulta Registry.

Ad esempio, i seguenti URL rimandano ai registri pubblici nella console Google Cloud:

Formati di immagini container

Container Registry supporta i formati di immagine Docker Image Manifest V2 e OCI. Per saperne di più, consulta la sezione Formati delle immagini dei container.

Se vuoi archiviare centralmente immagini e altri tipi di artefatti, valuta l'utilizzo di Artifact Registry anziché Container Registry.

Controllo dell'accesso

Container Registry archivia i propri tag e i file di livello per le immagini container in un bucket Cloud Storage nello stesso progetto del registry. L'accesso al bucket viene configurato utilizzando le impostazioni di gestione di identità e accessi (IAM) di Cloud Storage.

Un utente che ha accesso a un host del registry può accedere a qualsiasi immagine nel bucket di archiviazione dell'host. Se hai bisogno di controllo dell'accesso più granulare, valuta la possibilità di utilizzare Artifact Registry. Artifact Registry fornisce controllo dell'accessoi a livello di repository.

Per impostazione predefinita, i proprietari e gli editor del progetto dispongono delle autorizzazioni push e pull per il bucket Container Registry di quel progetto. I visualizzatori del progetto hanno solo l'autorizzazione di pull.

Per ulteriori informazioni sulle autorizzazioni di Container Registry, consulta Configurazione del controllo dell'accesso.

Consulta gli avvisi sul ritiro di Container Registry per informazioni sui piani di spostamento dei metadati delle immagini da Cloud Storage in un database di backend ad alte prestazioni.

Autenticazione

Prima di poter eseguire il push o il pull delle immagini, devi configurare l'autenticazione. Puoi configurare Docker in modo che utilizzi Google Cloud CLI per autenticare le richieste in Container Registry. Container Registry supporta anche metodi di autenticazione avanzati mediante token di accesso o file di chiavi JSON.

Assistente credenziali Docker

Docker deve avere accesso a Container Registry per eseguire il push e il pull delle immagini. Puoi utilizzare lo strumento a riga di comando helper per le credenziali Docker per configurare le credenziali di Container Registry per l'utilizzo con Docker.

L'helper delle credenziali recupera le tue credenziali di Container Registry, automaticamente o da una posizione specificata utilizzando il flag --token-source, e le scrive nel file di configurazione di Docker. In questo modo, puoi utilizzare lo strumento a riga di comando Docker, docker, per interagire direttamente con Container Registry.

Per ulteriori informazioni, consulta Autenticazione avanzata.

Account di servizio Container Registry

Quando abiliti l'API Container Registry, quest'ultimo aggiunge un account di servizio al tuo progetto. Questo account di servizio ha il seguente ID:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Questo account di servizio Container Registry è progettato specificamente per consentire a Container Registry di svolgere le proprie attività di servizio sul tuo progetto. Google gestisce questo account, ma è specifico per il tuo progetto.

Se elimini questo account di servizio o ne modifichi le autorizzazioni, alcune funzionalità di Container Registry non funzioneranno correttamente. Non modificare i ruoli o eliminare l'account.

Per ulteriori informazioni su questo account di servizio e sulle relative autorizzazioni, consulta Account di servizio Container Registry.

Cache pull-through

Il Registro di sistema mirror.gcr.io memorizza nella cache le immagini pubbliche richieste di frequente da Docker Hub.

L'utilizzo di immagini memorizzate nella cache può velocizzare i pull da Docker Hub. Il tuo client verifica sempre la presenza di una copia memorizzata nella cache di un'immagine Docker Hub prima di tentare di eseguirne il pull direttamente da Docker Hub.

Per maggiori informazioni, consulta Pull delle immagini Docker Hub memorizzate nella cache.

Notifiche

Puoi utilizzare Pub/Sub per ricevere notifiche sulle modifiche apportate alle immagini container.

Per ulteriori informazioni, consulta la sezione Configurazione delle notifiche Pub/Sub.

Utilizzo di Container Registry con Google Cloud

Le istanze di Compute Engine e i cluster di Google Kubernetes Engine possono eseguire il push e il pull delle immagini di Container Registry in base agli ambiti Cloud Storage delle istanze. Consulta Utilizzo di Container Registry con Google Cloud.

È possibile eseguire il deployment delle immagini archiviate in Container Registry nell'ambiente flessibile di App Engine.

Integrazioni degli strumenti di distribuzione continua

Container Registry funziona con i più diffusi sistemi di integrazione e distribuzione continua, tra cui Cloud Build e strumenti di terze parti come Jenkins.

Container Registry si integra perfettamente con i servizi Google Cloud. Ad esempio, Cloud Build può eseguire il push delle immagini e il pull di immagini dagli host di Container Registry nello stesso progetto per impostazione predefinita. Per impostazione predefinita, anche gli ambienti di runtime come Google Kubernetes Engine e Cloud Run possono eseguire il pull delle immagini dagli host del registro nello stesso progetto.

In alternativa, puoi utilizzare strumenti di terze parti come Jenkins per creare le immagini, eseguirne il pull e il push. Se utilizzi uno strumento di terze parti, devi configurare le autorizzazioni e l'autenticazione per l'account che interagirà con Container Registry per conto dello strumento.

Per esplorare esempi di integrazioni, visualizza le guide tecniche di Google Cloud che includono Container Registry.