Sobes.tech
Middle

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 :

  1. 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
    
  2. 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:v2 pointe désormais vers la nouvelle image.

  3. 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:v2
    

    Ce conteneur utilisera la nouvelle version de l’image.

  4. 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).