Questo documento introduce i concetti chiave relativi alle immagini dei contenitori, tra cui registri, repository e artefatti. Sono incluse anche alcune informazioni di base su come questi concetti si applicano ad Artifact Registry e Container Registry.
Gli esempi di Artifact Registry in questa pagina si riferiscono principalmente ai repository nel formato Docker e gcr.io
. Per ulteriori informazioni, consulta Formati supportati e la Panoramica del repository.
Registri
Un registry archivia e distribuisce immagini container e artefatti organizzati per nome all'interno di repository. Un registry può contenere un singolo repository o più repository e può essere pubblico o privato.
I servizi di registry come Docker Hub e Artifact Registry forniscono opzioni per creare repository pubblici o privati. Quando estrai immagini pubbliche, è importante comprendere i possibili problemi di sicurezza. Leggi la sezione sulla gestione delle dipendenze per saperne di più sul monitoraggio delle vulnerabilità e sulla riduzione del footprint delle dipendenze.
I registry sono organizzati in repository che archiviano le singole immagini dei container. Artifact Registry ti consente di creare più repository in un unico progetto e di associare a ogni repository una posizione regionale o multiregionale specifica. I repository correlati possono essere raggruppati per etichette.Repository di Artifact Registry e gestione delle immagini
Nei repository in formato Docker di Artifact Registry, puoi archiviare più immagini container con nomi diversi nello stesso repository. Ogni versione di un'immagine è identificata dal relativo digest e può essere associata a un tag. I tag possono essere mutabili o immutabili. Per saperne di più sulle versioni e sui tag delle immagini container, consulta Versioni delle immagini container.
In genere, Artifact Registry fa riferimento a parti del percorso di un'immagine per identificare il progetto, la località regionale o multiregionale e il nome dell'immagine, nonché il tag o il digest del manifest per identificare la versione corretta.Ad esempio:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
us-west1
è la posizione del repositorydocker.pkg.dev
è il nome host per i repository in formato Docker.PROJECT
è lo spazio dei nomi creato dal tuo Google Cloud ID progetto.quickstart-docker-repo
è lo spazio dei nomi del progetto in cui memorizzi le immagini. In Artifact Registry, questa parte del percorso è chiamata repository.quickstart-image
è il nome di tutte le versioni diquickstart-image
e viene spesso definito l'immagine.tag1
è il tag che specifica la versione dell'immagine.
Immagini
Sia gli elementi che le immagini possono essere archiviati in Artifact Registry. Un elemento può essere qualsiasi cosa: un file di testo, un'immagine Docker o un grafico Helm, mentre un'immagine in genere si riferisce a un'immagine del contenitore. Le immagini container sono pacchetti di software che contengono tutti gli elementi necessari per l'esecuzione in qualsiasi ambiente. Per saperne di più, consulta Che cosa sono i container.
Le immagini vengono inviate o caricate nei repository e esportate o scaricate dai repository. Per specificare l'immagine e la versione corrette, devono essere specificati il registro e l'elemento univoci.
Per ulteriori informazioni sui nomi di repository e immagini in Artifact Registry, consulta Nomi di repository e immagini.
Base
Le immagini container archiviate nei repository vengono costruite in modo incrementale utilizzando livelli. Immagini diverse possono utilizzare alcuni degli stessi livelli. I livelli vengono definiti in modi diversi a seconda del tipo di immagine. Ad esempio, ogni istruzione in un Dockerfile corrisponde a un livello nell'immagine Docker. All'interno di un registry, le immagini con livelli comuni condividono questi livelli, aumentando l'efficienza dello spazio di archiviazione. Per motivi di sicurezza, i livelli non vengono condivisi tra registri diversi.
Quando elimini un'immagine container, i livelli non vengono eliminati immediatamente. I livelli a cui non viene fatto riferimento da nessuna immagine nel registry vengono eliminati ogni giorno.
Tag
Gli utenti aggiungono i tag quando eseguono il push o il pull di un'immagine in un repository per specificare la versione di un'immagine. Un'immagine può avere uno o più tag oppure non avere alcun tag. Se utilizzi tag mutabili ed esegui il push di un'immagine due volte con lo stesso tag, il tag viene rimosso dalla prima immagine e spostato nella seconda, lasciando la prima immagine senza tag. L'immagine non taggata è ancora accessibile tramite i suoi digest manifest.
Se utilizzi tag immutabili, le seguenti azioni non sono consentite:
- Eliminare un'immagine taggata. L'eliminazione delle immagini non taggate è ancora consentita.
- Rimuovi un tag da un'immagine.
- Esegui il push di un'immagine con un tag già utilizzato da un'altra versione dell'immagine nel repository.
Il tag latest
è un tag speciale aggiunto quando le immagini vengono inviate senza un tag.
Ad esempio:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
spinge l'immagine in hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
acquisisce l'immagine hello-app:latest
.
È importante notare che quando un'immagine viene inviata a un repository con un tag diverso da latest
, il tag latest
non viene aggiunto, pertanto è possibile che l'immagine latest
non sia aggiornata alle modifiche più recenti. Consigliamo di utilizzare tag diversi da latest
per le uscite.
Manifest
I manifest delle immagini identificano e specificano in modo univoco i livelli all'interno di ogni immagine. I manifest vengono identificati da hash SHA-256 univoci chiamati digest dei manifest. I digest manifest sono più affidabili e sicuri dei tag perché nei repository con tag mutabili è possibile eseguire il push di più versioni della stessa immagine nello stesso tag, lasciando alcune immagini senza tag, mentre ogni immagine è specificata in modo univoco dal suo digest manifest.
Se utilizzi strumenti per scansionare o analizzare le immagini, i risultati di questi strumenti sono validi solo per l'immagine scansionata. Per assicurarti di eseguire il deployment dell'immagine acquisita, non puoi fare affidamento sul tag perché l'immagine a cui fa riferimento il tag potrebbe cambiare.
Per scoprire di più su tagging e manifest specifici di Artifact Registry, consulta Gestire le immagini e Utilizzare le immagini dei container.
Passaggi successivi
- Guida rapida di Docker
- Lavorare con le immagini container
- Guida rapida di Helm
- Lavorare con i grafici Helm
- Scopri di più su DevOps ed esplora il programma di ricerca DORA.