8.1 Tagging dans Docker
Le tagging dans Docker, c'est le processus d'attribuer un tag à une image, ce qui simplifie la gestion des versions. Ça rend le déploiement et la mise à jour des applications plus pratiques et plus maniables. Dans cette conférence, on va examiner en détail ce que sont les tags, comment les utiliser et quelles recommandations peuvent vous aider à mieux bosser avec eux.
Un tag (tag) dans Docker, c'est une étiquette qui permet d'identifier une version spécifique d'une image. Les tags permettent de suivre les changements plus facilement et aident à choisir les bonnes versions pour différents environnements, comme le développement, les tests et la prod.
Concepts principaux des tags :
- Unicité : un tag identifie de manière unique une version précise de l'image.
- Versioning : les tags servent à désigner les versions des images, par exemple, v1.0, v2.0, latest.
- Flexibilité : les tags sont utilisés pour créer des images correspondant à des phases spécifiques du développement, comme
beta
,stable
,prod
.
8.2 Comment utiliser les tags
1. Attribuer des tags lors du build d’une image
Tu peux attribuer un tag à une image pendant sa création en utilisant le paramètre -t
avec la commande docker build
.
Exemple :
Dans cet exemple, l'image reçoit le nom myapp
et le tag 1.0.
docker build -t myapp:1.0 .
2. Attribuer des tags supplémentaires à une image existante
Tu peux ajouter des tags à une image existante en utilisant la commande docker tag
.
Exemple :
Cet exemple attribue à l'image myapp:1.0
un tag supplémentaire latest
.
docker tag myapp:1.0 myapp:latest
3. Utiliser des tags lors du lancement des conteneurs
Quand tu lances un conteneur, tu peux spécifier un tag précis d'image que tu veux utiliser.
Exemple :
Cet exemple lance un conteneur basé sur l'image myapp
avec le tag 1.0
.
docker run -d myapp:1.0
8.3 Pratique du tagging
Utilisation de la version sémantique
La version sémantique (Semantic Versioning) est une pratique standard d'attribution de versions qui aide à comprendre le niveau des changements dans une image.
Format de version sémantique :
<major>.<minor>.<patch>
Où :
-
major
: Changements majeurs, incompatibles avec les versions précédentes. -
minor
: Nouvelles fonctionnalités, compatibles avec les versions précédentes. -
patch
: Corrections de bugs et autres modifications mineures.
Exemple :
docker build -t myapp:2.1.3 .
Utilisation des labels supplémentaires
Les labels supplémentaires aident à indiquer l'état d'une image, par exemple, beta
, alpha
, stable
ou prod
.
Exemple :
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Mise à jour des tags
Lors de la mise à jour d'une image, il est conseillé de modifier les tags pour faciliter le suivi des changements. Le tag latest
est souvent utilisé pour indiquer la dernière version d'une image.
Exemple :
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Exemples d'utilisation des tags
Exemples d'utilisation des tags dans différents environnements :
Exemple 1 : Développement
Pour le développement, on utilise souvent des images avec des tags indiquant la version actuelle ou l'état de développement, par exemple, dev
.
docker build -t myapp:dev .
docker run -d myapp:dev
Exemple 2 : Test
Dans les environnements de test, on utilise des images avec des tags qui indiquent des versions spécifiques ou un état, tels que beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Exemple 3 : Production
Dans les environnements de production, il est important d'utiliser des versions stables et validées des images, indiquées par des tags comme stable
, prod
, ou des versions sémantiques telles que 1.1.0-stable
.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Meilleures pratiques
1. Toujours utiliser le versionnement sémantique
Suivez le versionnement sémantique pour toutes les images. Ça aide à distinguer clairement les niveaux de modifications et facilite la gestion des versions.
2. Utiliser des tags clairs et significatifs
Utilisez des tags qui reflètent clairement l'état ou l'objectif de l'image (par exemple, beta
, stable
, prod
).
3. Éviter d'utiliser latest en production
Le tag latest
peut être utile pour le développement et les tests, mais en production, mieux vaut utiliser des versions spécifiques pour éviter des modifications imprévisibles.
4. Documenter l'utilisation des tags
Documentez comment et pourquoi les tags sont utilisés dans votre projet. Cela aidera l'équipe à mieux comprendre le processus de versionnement et réduira les risques d'erreurs.
Exemples de Dockerfile avec des tags
Exemple 1 : Création et assignation des tags
# Dockerfile pour la version 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Commandes pour construire et taguer
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Exemple 2 : Mise à jour de l'image et tagage
# Dockerfile pour la version 1.1.0 avec une nouvelle fonctionnalité
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"]
Commandes pour construire et taguer
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION