GitLab - 5.29 Arrêter et supprimer un conteneur dans un pipeline

Lorsqu'un pipeline relance un conteneur portant le même nom, Docker refuse le lancement, car ce nom est déjà utilisé. Cette leçon montre comment arrêter et supprimer l'ancien conteneur automatiquement, sans intervention manuelle.

Comprendre le conflit de nom

Le déploiement échoue car un conteneur portant ce nom existe déjà. Pour le réutiliser, il faut d'abord arrêter le conteneur, puis le supprimer.

La méthode manuelle consiste à arrêter le conteneur avec docker stop, suivi de son identifiant. Cette méthode fonctionne, mais elle n'est pas automatique.

docker stop <identifiant-du-conteneur>

Enchaîner les commandes dans le pipeline

Le symbole && exécute la commande suivante seulement si la précédente réussit. Le symbole || exécute la commande suivante seulement si la précédente échoue.

La suppression ne doit donc s'exécuter que si l'arrêt a réussi. Ajouter || true après chaque commande évite qu'un échec bloque le pipeline.

docker stop <nom-du-conteneur> || true && docker rm <nom-du-conteneur> || true

Cas de la première exécution

Lors de la première exécution, aucun conteneur n'existe encore. La commande d'arrêt échoue, mais le || renvoie un résultat vrai et le pipeline peut continuer. La suppression échoue aussi, et le même mécanisme évite l'erreur.

En résumé

Le conflit de nom est évité en arrêtant puis en supprimant l'ancien conteneur. Le symbole && enchaîne les commandes en cas de succès. Le symbole || permet de poursuivre en cas d'échec, comme lors de la première exécution.

Points clés

  • Docker refuse de lancer un conteneur dont le nom est déjà utilisé.
  • L'arrêt manuel se fait avec docker stop, suivi de l'identifiant du conteneur.
  • Le symbole && lance la commande suivante seulement si la précédente réussit.
  • Le symbole || lance la commande suivante seulement si la précédente échoue.
  • Ajouter || true évite l'échec lors de la première exécution.

Questions fréquentes

Pourquoi la suppression ne s'exécute-t-elle que si l'arrêt réussit ?

La vidéo explique que le conteneur ne peut être supprimé que s'il est arrêté. C'est pourquoi l'opérateur && relie les deux commandes.

Pourquoi ajouter || true ?

Lors de la première exécution, aucun conteneur n'existe. Sans || true, la commande d'arrêt générerait une erreur et le pipeline s'arrêterait.

Faut-il arrêter le conteneur à la main ?

Non. La vidéo insiste sur l'automatisation : les commandes arrêtent et suppriment le conteneur à chaque exécution du pipeline.