Perché il tag "latest" non va utilizzato
Quante volte hai utilizzato il tag latest senza rifletterci? Vediamo nel dettaglio cos’è e quando (non) va usato.
Versione breve
Il tag “latest” in realtà non significa più recente, non significa nulla.
“latest” è solo un alias, come potrebbe esserlo “il_mio_tag”, quindi questo è solo il frutto di uno sviluppatore che ha avuto una pessima idea.
Versione lunga
Tutti si aspettano che il tag "latest" punti sempre alla versione più recente di un’immagine, ma purtroppo quasi mai è così.
Questo è solo un tag che viene applicato per impostazione predefinita ad un’immagine a cui non è stato associato un tag.
Vediamo una serie di casi d’uso: ogni volta che si effettua la build di una nuova immagine, è bene assegnare una nuova versione del tag -ad esempio, 1.0.0- e quindi aggiornare anche il tag “latest”; negli esempi seguenti, il tag latest viene creato e associato all’immagine tramite il secondo comando, ma nel primo e nel terzo non viene associato e quindi non è conoscenza delle ultime modifiche sull’immagine:
$ docker build -t my_image:1.0.0 . # latest non è utilizzato
$ docker build -t my_image # latest viene associato all'immagine
$ docker build -t my_image:1.0.1 . # latest non viene aggiornato
“latest” viene effettivamente utilizzato quando ci si dimentica di assegnare un tag ad un’immagine, come spesso accade quando si effettuano le prime operazioni di build o push; la realtà è che non viene utilizzato quindi come previsto, perché di solito non viene aggiornato insieme all’ultima versione dell’immagine rilasciata. Come mostrato di seguito, se utilizzato in combinazione con la build di una nuova versione dell’immagine, questo viene aggiornato coerentemente con le modifiche più recenti:
$ docker build -t my_image:1.0.0 -t my_image:latest . # latest viene aggiornato
$ docker build -t my_image:1.0.1-t my_image:latest . # latest viene aggiornato
# ecc.
Risorse utili
Letture consigliate: [container(http://Docker) (disponibile su Amazon)