Image Naming & Tagging
Per identificare un'ammagine in un repository è sufficiente indicare, in fase di pulling, il nome del repository e il tag, separato da :
Per esempio se volessimo scaricare dal repository di "RabbitMQ" sul Registry Hub Docker la versione 3.8.3 dovremmo scrivere questo comando:
docker image pull rabbitmq:3.8.3
Il nome del repository è "rabbitmq", il tag è "3.8.3". Il tag "latest" è il tag standard per indicare l'ultima versione, ed è anche il tag di default, quello che viene usato nel caso in cui non vena specificato nella riga di comando per il pulling. Fate però attenzione, non è detto che corrisponda sempre all'ultima versione disponibile. Controllate prima le versioni disponibili nel repository.
Scaricare un'immagine da un repository non ufficiale non è molto diverso, richiede solo quale informazione in più. Per esempio scaricare dal repository "repo" di proprietà dell'utente "username" l'immagine "tag" (sempre da Hub Docker) occorre questo comando:
docker image pull username/repo:tag
Usare registry diversi da Docker Hub
Per caricare le immagini da altri registry è necessario specificarne il nome del DNS nel comando. Per esempio, se volessimo usare il registry di Google (GCR - Google Container Registry) bisogna specificarne il DNS name (gcr.io) prima del nome del repository seguito da "/".
docker image pull gcr.io/username/repo:tag
Tag multipli
I tag sono meta-data associati liberamente ad una immagine, ed ogni immagine può averne più di uno. Non esiste un massimo. Tra questi tag in uso potrebbe esserci anche il già citato "latest", che però non ha alcuna caratteristica speciale rispetto agli altri. Sta allo sviluppatore attribuirlo a quella che ritiene l'immagine più recente, dunque non è detto si tratti quella che contiene l'ultima versione.
Attenzione al contrario : a parità di repository non dovrebbero esserci due o più immagini con lo stesso tag. Per esempio, eseguendo la build di una nuova immagine attribuendole un tag pre-esistente, Docker toglierà il tag all'immagine precedente lasciandola senza tag (dangling image), se ne aveva uno solo. E' possibile eliminare dal sistema tutte le immagini dangling con il comando prune:
docker image prune
Tuttavia, pasticciando a mano è ancora fattibile attribuire a due immagini nello stesso repository lo stesso tag, e questo non può che portare a problemi. E' per quello che Docker ha introdotto, dalla versione 1.0 i digest.