8.1 Tagging in Docker
Il tagging in Docker è il processo di assegnare un'etichetta a un'immagine, il che semplifica la gestione delle versioni. Questo rende il deployment e l'aggiornamento delle applicazioni più comodi e gestibili. In questa lezione analizzeremo in dettaglio cosa sono i tag, come usarli e quali consigli possono aiutarti a lavorare con essi in modo più efficiente.
Tag (tag) in Docker — un'etichetta che consente di identificare una specifica versione di un'immagine. I tag semplificano il monitoraggio delle modifiche e aiutano a scegliere le versioni necessarie per diversi ambienti, come sviluppo, testing e produzione.
Concetti principali sui tag:
- Unicità: il tag identifica in modo univoco una specifica versione dell'immagine.
- Versionamento: con i tag si indicano le versioni delle immagini, ad esempio, v1.0, v2.0, latest.
- Flessibilità: i tag vengono utilizzati per creare immagini che corrispondono a specifiche fasi di sviluppo, ad esempio,
beta
,stable
,prod
.
8.2 Come usare i tag
1. Assegnare tag durante la build di un'immagine
Puoi assegnare un tag a un'immagine durante la sua build usando il parametro -t
del comando docker build
.
Esempio:
In questo esempio viene assegnato il nome myapp
e il tag 1.0 all'immagine.
docker build -t myapp:1.0 .
2. Assegnare tag aggiuntivi a un'immagine esistente
Puoi aggiungere tag a un'immagine già esistente usando il comando docker tag
.
Esempio:
Questo esempio assegna all'immagine myapp:1.0
un tag aggiuntivo latest
.
docker tag myapp:1.0 myapp:latest
3. Usare i tag quando avvii i container
Quando avvii un container, puoi specificare un particolare tag dell'immagine che vuoi usare.
Esempio:
Questo esempio avvia un container basato sull'immagine myapp
con il tag 1.0
.
docker run -d myapp:1.0
8.3 Pratica del tagging
Uso della versione semantica
La versione semantica (Semantic Versioning) è una pratica standard per assegnare versioni, che aiuta a capire il livello di cambiamenti nell'immagine.
Formato della versione semantica:
<major>.<minor>.<patch>
Dove:
-
major
: Modifiche principali, non compatibili con le versioni precedenti. -
minor
: Nuove funzionalità, compatibili con le versioni precedenti. -
patch
: Correzioni di bug e altri cambiamenti minori.
Esempio:
docker build -t myapp:2.1.3 .
Uso di etichette aggiuntive
Le etichette aggiuntive aiutano a definire lo stato dell'immagine, ad esempio, beta
, alpha
, stable
o prod
.
Esempio:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Aggiornamento dei tag
Durante l'aggiornamento dell'immagine, si consiglia di modificare i tag per facilitare il monitoraggio delle modifiche. Il tag latest
è spesso usato per indicare l'ultima versione dell'immagine.
Esempio:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Esempi di utilizzo dei tag
Esempi di utilizzo dei tag in diversi ambienti:
Esempio 1: Sviluppo
Per lo sviluppo spesso si utilizzano immagini con tag che indicano la versione attuale o lo stato dello sviluppo, ad esempio, dev
.
docker build -t myapp:dev .
docker run -d myapp:dev
Esempio 2: Test
Negli ambienti di test si usano immagini con tag che indicano versioni specifiche o stati, come beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Esempio 3: Produzione
Negli ambienti di produzione è importante utilizzare versioni stabili e testate delle immagini, indicate da tag come stable
, prod
, oppure versioni semantiche come 1.1.0-stable
.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Migliori pratiche
1. Usa sempre il versionamento semantico
Segui il versionamento semantico per tutte le immagini. Questo aiuta a distinguere chiaramente i livelli di modifiche e facilita la gestione delle versioni.
2. Usa tag chiari e significativi
Utilizza tag che riflettano chiaramente lo stato o il fine dell'immagine (ad esempio, beta
, stable
, prod
).
3. Evita di usare latest in produzione
Il tag latest
può essere utile per lo sviluppo e i test, ma in produzione è meglio utilizzare versioni specifiche per evitare modifiche imprevedibili.
4. Documenta l'utilizzo dei tag
Documenta come e per cosa vengono utilizzati i tag nel tuo progetto. Questo aiuterà il team a comprendere meglio il processo di versionamento e ridurrà la probabilità di errori.
Esempi di Dockerfile con utilizzo dei tag
Esempio 1: Creazione e assegnazione di tag
# Dockerfile per la versione 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Comandi per la build e il tagging
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Esempio 2: Aggiornamento dell'immagine e tagging
# Dockerfile per la versione 1.1.0 con una nuova funzionalità
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Comandi per la build e il tagging
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION