Concetti sui container

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 repository
  • docker.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 di quickstart-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