Panoramica di Container Registry

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

Il servizio è deprecato. Puoi spostare le immagini esistenti in Artifact Registry e continuare ad accedervi utilizzando il dominio gcr.io. A partire dal 15 maggio 2024, i progetti che non hanno mai utilizzato Container Registry ospiteranno solo le immagini per il dominio gcr.io in Artifact Registry.

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

Lavorare con le immagini

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

Puoi accedere al registry tramite endpoint HTTPS sicuri, che ti consentono di spingere, estrarre e gestire le immagini da qualsiasi sistema, istanza VM o dal tuo 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 le immagini in regioni anziché in più regioni, utilizza Artifact Registry.

I registry in 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 è archiviata l'immagine:

    • gcr.io ospita attualmente le immagini negli Stati Uniti, ma la sede potrebbe cambiare in futuro
    • us.gcr.io ospita l'immagine negli Stati Uniti, in un bucket di archiviazione distinto da quello delle 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 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 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 due punti (:), consulta Progetti basati su 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 in base al nome dell'immagine. Ogni repository può contenere più immagini con lo stesso nome. Ad esempio, potrebbe contenere versioni diverse di un'immagine chiamata "la mia immagine".

  • L'aggiunta di :TAG o @IMAGE-DIGEST alla fine 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 registry di seguito.

Per l'immagine my-image nel registry 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 registry. Quando contrassegnate, esegui il push o il pull di un'immagine, specifica il nome del repository nel 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 del sistema file effettiva 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, ha 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 distinte, pertanto puoi applicare criteri IAM separati a repository come us-docker.pkg.dev/builds/product1 e us-docker.pkg.dev/builds/product2.

Versioni delle immagini all'interno di un registry

Un registry può contenere molte immagini, che possono avere versioni diverse. Per identificare una versione specifica dell'immagine all'interno di un registry, puoi specificare il tag o il digest dell'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à al 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
    
  • In alternativa, 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 due punti (:), consulta Progetti basati su dominio di seguito.

Nella console Google Cloud, nella schermata Immagini, la colonna Tag elenca i tag dell'immagine. Fai clic sulla versione dell'immagine per visualizzare i metadati, tra cui il digest dell'immagine.

Per informazioni su come modificare i tag, consulta Codifica delle immagini.

Progetti basati sul dominio

Se il progetto è limitato al tuo dominio, l'ID progetto include il nome del dominio seguito da due punti (:). A causa del modo in cui Docker tratta i due punti, devi sostituire il carattere dei due punti con una barra verticale quando specifichi un digest dell'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 dei registry come URL

L'URL https://HOSTNAME/PROJECT-ID/IMAGE è un URL di un'immagine nella console Google Cloud. Qualsiasi utente autenticato che abbia l'autorizzazione per accedere all'host del registry può utilizzare i link per visualizzare le immagini memorizzate. Per informazioni dettagliate sul formato del percorso dell'immagine, consulta Registri.

Ad esempio, i seguenti URL rimandano a registry pubblici nella console Google Cloud:

Formati di immagini container

Container Registry supporta i formati delle immagini OCI e Docker Image Manifest V2. Per ulteriori informazioni, consulta Formati delle immagini dei container.

Se vuoi archiviare centralmente immagini e altri tipi di elementi, ti consigliamo di utilizzare Artifact Registry anziché Container Registry.

Controllo degli accessi

Container Registry archivia i tag e i file di livello per le immagini dei container in un bucket Cloud Storage nello stesso progetto del registry. L'accesso al secchio viene configurato utilizzando le impostazioni di Identity and Access Management (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'accesso 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 del progetto. I visualizzatori del progetto dispongono solo dell'autorizzazione di estrazione.

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

Consulta le notifiche di ritiro di Container Registry per informazioni sui piani per spostare i 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 a Container Registry. Container Registry supporta anche metodi di autenticazione avanzati che utilizzano token di accesso o file di chiavi JSON.

Assistente per le credenziali Docker

Docker ha bisogno di accedere a Container Registry per eseguire il push e il pull delle immagini. Puoi utilizzare lo strumento a riga di comando Docker credential helper per configurare le tue credenziali Container Registry per l'utilizzo con Docker.

L'helper delle credenziali recupera le credenziali di Container Registry automaticamente o da una posizione specificata utilizzando il relativo flag --token-source, quindi 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 attivi l'API Container Registry, Container Registry 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 appositamente per consentire a Container Registry di svolgere le sue funzioni di servizio nel tuo progetto. Google gestisce questo account, ma è specifico per il tuo progetto.

Se elimini questo account di servizio o ne modifichi le autorizzazioni, determinate funzionalità di Container Registry non funzioneranno correttamente. Non devi 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 registry mirror.gcr.io memorizza nella cache le immagini pubbliche richieste di frequente da Docker Hub.

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

Per ulteriori informazioni, consulta Eseguire il pull delle immagini Docker Hub memorizzate nella cache.

Notifiche

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

Per ulteriori informazioni, consulta la pagina relativa alla configurazione delle notifiche Pub/Sub.

Utilizzo di Container Registry con Google Cloud

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

Le immagini archiviate in Container Registry possono essere implementate nell'ambiente flessibile di App Engine.

Integrazioni degli strumenti di distribuzione continua

Container Registry è compatibile 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, per impostazione predefinita Cloud Build può eseguire il push e il pull di immagini dagli host Container Registry nello stesso progetto. Per impostazione predefinita, gli ambienti di runtime come Google Kubernetes Engine e Cloud Run possono anche estrarre immagini dagli host del registry nello stesso progetto.

In alternativa, puoi utilizzare strumenti di terze parti come Jenkins per creare, estrarre e spingere le immagini. Quando 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, consulta le guide tecniche di Google Cloud che includono Container Registry.