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