Que se passera-t-il après avoir apporté des modifications à l'image?
sobes.tech IA
Réponse de l'IA
Après avoir apporté des modifications à l’image, celle-ci devient une nouvelle version distincte. Lors du lancement d’un conteneur basé sur cette image, le conteneur utilisera la version modifiée, reflétant les changements appliqués. Les anciens conteneurs, lancés avec des versions précédentes de l’image, conserveront leur état et fonctionneront avec l’ancienne version jusqu’à ce qu’ils soient arrêtés et relancés avec la nouvelle image. En d’autres termes, les modifications apportées à l’image n’affectent pas les conteneurs déjà en cours d’exécution.
Examinons le cycle de vie à l’aide de l’exemple Docker :
-
Construction du Dockerfile : Vous apportez des modifications au
Dockerfile.# Dockerfile mis à jour FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Construction de l’image : Vous exécutez la commande de build.
# Construction d’une nouvelle version de l’image docker build -t my-webserver:v2 .Docker crée une nouvelle couche avec les changements effectués sur les couches précédentes.
my-webserver:v2pointe désormais vers la nouvelle image. -
Lancer un nouveau conteneur : Vous démarrez un nouveau conteneur.
# Lancer un conteneur basé sur la nouvelle version de l’image docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Ce conteneur utilisera la nouvelle version de l’image.
-
Conteneurs existants : Les conteneurs lancés avec, par exemple,
my-webserver:v1, continueront de fonctionner avec les anciennes données et configurations.
| Action | Résultat | Impact sur les anciens conteneurs |
|---|---|---|
| Modification du Dockerfile | Le code de définition de l’image change. | Non |
| Construction de l’image (docker build) | Une nouvelle image avec un ID unique est créée. | Non |
| Étiquetage de l’image (docker tag) | Un alias est attribué à la nouvelle image. | Non |
| Démarrer un nouveau conteneur | Le nouveau conteneur utilise la nouvelle image. | Non |
| Redémarrer un ancien conteneur | Exécuter l’ancien conteneur avec l’image ancienne. | Non (par défaut) |
| Supprimer l’image ancienne | L’image est supprimée, mais pas les conteneurs basés dessus. | Non (les conteneurs restent) |
Si vous souhaitez mettre à jour les conteneurs en cours d’exécution vers la nouvelle version de l’image, vous devez arrêter et supprimer les anciens, puis en lancer de nouveaux avec l’image mise à jour. En production, pour gérer ces mises à jour, on utilise des orchestrateurs comme Kubernetes, Docker Swarm ou des utilitaires comme Docker Compose, qui mettent en œuvre des stratégies de mises à jour progressives (rolling updates).