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 imagesup -d→ appliquer les changements et démarrer la stackstop/start→ pause temporairedown→ 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