📚 Docker pour les débutants : Le Chantier Naval

5.4 : Cycle de vie : up, down, stop, start

📄 Article ⏱ 10 ✅ Gratuit

Avec Docker Compose, gérer une stack multi-conteneurs devient beaucoup plus simple qu’avec des commandes docker run répétitives. L’objectif est de pouvoir démarrer, arrêter, redémarrer ou supprimer toute votre stack en quelques commandes, sans toucher à chaque conteneur individuellement.

Le cycle de vie d’une stack se gère principalement avec quatre commandes : up, down, stop, et start, auxquelles s’ajoute restart pour les redémarrages rapides.

Démarrer la stack : docker compose up

Pour lancer tous les services définis dans votre docker-compose.yml, utilisez :

docker compose up -d

L’option -d démarre la stack en arrière-plan, laissant votre terminal libre. Compose crée alors les conteneurs s’ils n’existent pas encore, monte les volumes, connecte les réseaux et lance tous les services. Si vous omettez -d, vous verrez directement les logs dans le terminal, pratique pour vérifier le démarrage.

Arrêter et supprimer la stack : docker compose down

Lorsque vous voulez arrêter tous les conteneurs et nettoyer votre stack, la commande down est utilisée :

docker compose down

Par défaut, docker compose down ne supprime pas les volumes. Cela permet de conserver les données persistantes que nous avons configurées dans /data ou via des bind mounts.

⚠️ Attention avec l’option -v :

docker compose down -v

Celle-ci supprime tous les volumes associés à la stack, ce qui entraîne la perte des données stockées dans les volumes Docker. Si vous avez configuré vos bases de données ou fichiers persistants via des volumes gérés par Docker (type my_data:/var/lib/mysql), utilisez cette option avec prudence. Pour les volumes montés sur des dossiers locaux (./data:/var/lib/mysql), vos données restent sécurisées même si vous supprimez les conteneurs.

Mettre la stack en pause et redémarrer

Pour suspendre temporairement votre stack sans supprimer les conteneurs, utilisez stop :

docker compose stop

Vous pouvez redémarrer les conteneurs arrêtés avec :

docker compose start

Pour redémarrer rapidement un service (utile après une modification de configuration ou pour purger les logs) :

docker compose restart php-web

Ajouter / mettre à jour les images : docker compose pull

Avant le premier lancement d’une stack, ou lorsque vous souhaitez récupérer les dernières versions des images, vous pouvez utiliser la commande :

docker compose pull

Cette commande télécharge toutes les images définies dans votre docker-compose.yml sans démarrer les conteneurs. Cela permet de préparer votre environnement ou de vérifier qu’une mise à jour est disponible.

Une fois les images téléchargées, vous pouvez démarrer la stack normalement :

docker compose up -d

Si une image a été mise à jour, Docker recréera automatiquement le conteneur avec la nouvelle version.

Dans la pratique, une mise à jour classique d’une stack Compose ressemble souvent à ceci :

docker compose pull
docker compose up -d

La première commande récupère les nouvelles images, et la seconde redémarre les services si nécessaire.

Astuce : Il est aussi possible de combiner directement la mise à jour et le lancement avec :

docker compose up -d --pull always

Docker vérifiera alors systématiquement si une nouvelle image est disponible avant de démarrer les conteneurs.

Surveiller l’état de la stack

Pour vérifier quels conteneurs tournent et leur statut :

docker compose ps

Pour suivre les logs en temps réel :

docker compose logs -f

Vous pouvez également consulter les volumes et réseaux utilisés avec :

docker volume ls
docker network ls

Bonne pratique : mettre à jour proprement une stack Compose

En production ou sur un serveur, la mise à jour d’une stack Docker Compose se fait généralement en deux étapes. On commence par récupérer les nouvelles images, puis on redémarre la stack.

docker compose pull
docker compose up -d --remove-orphans

La première commande télécharge les dernières versions des images définies dans le docker-compose.yml.

La seconde relance la stack en arrière-plan. Si une image a changé, Docker recréera automatiquement le conteneur concerné.
L’option --remove-orphans permet de supprimer les anciens conteneurs qui ne sont plus définis dans le fichier docker-compose.yml. Cela évite de laisser tourner des services obsolètes.

Cette méthode est particulièrement utile lorsque votre projet évolue et que certains services sont ajoutés, renommés ou supprimés.

Dans un contexte de mise à jour régulière de serveurs, cette séquence est souvent automatisée via des scripts ou des outils d’orchestration.

Erreurs classiques avec Docker Compose

Lorsque l’on débute avec Docker Compose, certaines confusions reviennent très souvent. Voici les plus fréquentes.

Penser que docker compose pull met à jour les conteneurs

La commande suivante télécharge uniquement les nouvelles images :

docker compose pull

Mais elle ne redémarre pas les conteneurs. Pour appliquer la mise à jour, il faut relancer la stack :

docker compose up -d

Modifier le docker-compose.yml sans relancer la stack

Si vous modifiez un port, un volume ou une variable d’environnement dans votre fichier Compose, les conteneurs existants ne seront pas automatiquement modifiés.

Il faut appliquer les changements avec :

docker compose up -d

Docker recréera uniquement les conteneurs concernés par les modifications.

Utiliser down alors qu’un simple stop suffirait

Certains utilisateurs arrêtent leur stack avec :

docker compose down

Alors qu’ils souhaitaient simplement arrêter temporairement les services.
Dans ce cas, la commande suivante est souvent plus adaptée :

docker compose stop

Cela évite de recréer les conteneurs au prochain démarrage.

Supprimer les volumes par erreur avec down -v

Comme vu précédemment, la commande suivante supprime également les volumes :

docker compose down -v

Si vos bases de données ou fichiers persistants sont stockés dans des volumes Docker, les données seront définitivement perdues.

Conclusion

Maîtriser ces commandes permet de gérer le cycle de vie complet d’une stack Compose. up -d démarre la stack, down la supprime, stop/start gère les interruptions temporaires et restart redémarre rapidement un service.

⚠️ Rappel important sur les volumes :

si vous utilisez des volumes Docker pour stocker vos données, ne supprimez pas les volumes par inadvertance avec down -v, sinon vos bases ou fichiers persistants seront perdus. Préférez des bind mounts locaux (./data) pour garder un contrôle total sur vos données.


📌 À retenir

La majorité des actions dans Docker Compose suivent une logique simple :

  • pull → télécharger les images
  • up -d → appliquer les changements et démarrer la stack
  • stop/start → pause temporaire
  • down → suppression de la stack

Avec Docker Compose, la gestion d’une stack repose sur quelques commandes simples qui couvrent tout le cycle de vie des conteneurs.

La logique générale est la suivante :

docker compose pull
        │
        ▼
docker compose up -d
        │
        ▼
     RUNNING
        │
   ┌────┴────┐
   ▼         ▼
stop       restart
   │
   ▼
start
   │
   ▼
docker compose down