← Retour aux tutoriels

Docker Compose : commande introuvable — correctifs sur Mac, Linux et Windows

dockerdocker-composedevopsmacoslinuxwindowswsltroubleshooting

Docker Compose : commande introuvable — correctifs sur Mac, Linux et Windows

Ce tutoriel explique en profondeur pourquoi l’erreur docker-compose: commande introuvable (ou variantes comme docker compose: command not found, 'docker-compose' n’est pas reconnu en tant que commande interne) apparaît, et comment la corriger proprement sur macOS, Linux et Windows.
On couvrira aussi les différences entre Docker Compose v1 (docker-compose) et Docker Compose v2 (docker compose), les problèmes de PATH, les installations via Docker Desktop, paquets, pip, et les cas fréquents en CI, WSL, zsh/bash, etc.


1) Comprendre l’erreur : docker-compose vs docker compose

1.1 Docker Compose v1 (historique)

1.2 Docker Compose v2 (actuel)

1.3 Pourquoi “commande introuvable” arrive

Les causes typiques :

  1. Compose n’est pas installé (ni v1 ni v2).
  2. Vous utilisez la mauvaise commande :
    • Compose v2 est installé, mais vous tapez docker-compose.
    • Compose v1 est installé, mais vous tapez docker compose (plus rare aujourd’hui).
  3. Problème de PATH :
    • binaire installé mais non accessible,
    • shell non rechargé,
    • installation dans un répertoire non listé.
  4. Docker CLI installé sans plugins (Linux minimal, serveur).
  5. Contexte Windows/WSL confus :
    • Docker Desktop côté Windows, commande lancée dans WSL sans intégration,
    • ou inversement.
  6. Alias/compatibilité manquante :
    • certains scripts attendent docker-compose.

2) Diagnostic rapide (toutes plateformes)

Ouvrez un terminal et exécutez ces commandes dans l’ordre.

2.1 Vérifier Docker

docker --version
docker info

2.2 Vérifier Compose v2

docker compose version

2.3 Vérifier Compose v1

docker-compose --version

2.4 Identifier ce qui est réellement exécuté

Sur macOS/Linux :

which docker
which docker-compose
type docker
type docker-compose

Sur Windows PowerShell :

Get-Command docker
Get-Command docker-compose

But : savoir si la commande existe, et d’où elle vient.


3) Correctif universel : utiliser la bonne commande

Si docker compose version fonctionne mais docker-compose échoue, vous êtes dans le cas le plus fréquent : Compose v2 est installé et Compose v1 ne l’est pas.

3.1 Solution immédiate

Utilisez :

docker compose up -d

au lieu de :

docker-compose up -d

3.2 Rendre vos scripts compatibles (alias)

Si vous avez des scripts/outils qui appellent docker-compose, vous pouvez créer un alias.

macOS / Linux (bash/zsh)

Ajoutez dans ~/.bashrc, ~/.bash_profile ou ~/.zshrc :

alias docker-compose='docker compose'

Rechargez :

source ~/.zshrc
# ou
source ~/.bashrc

Windows PowerShell (alias temporaire)

Set-Alias docker-compose "docker"

Mais attention : docker-compose up deviendrait docker up (ce qui ne marche pas). PowerShell ne gère pas un alias multi-mots comme docker compose de façon simple.

Approche recommandée : créer un petit script docker-compose.ps1 dans un dossier du PATH :

Créez un fichier docker-compose.ps1 contenant :

docker compose @args

Puis placez-le dans un répertoire présent dans $env:Path (ex. C:\Users\<Vous>\bin) et ajoutez ce répertoire au PATH si nécessaire.


4) macOS : causes et solutions

4.1 Cas le plus courant : Docker Desktop installé, mais vous tapez docker-compose

Docker Desktop fournit Compose v2. Vérifiez :

docker compose version

Si OK, utilisez docker compose ... ou créez l’alias docker-compose='docker compose'.

4.2 Docker Desktop non installé / Docker CLI seul

Si docker n’existe pas :

Après installation, vérifiez :

docker --version
docker compose version

4.3 Problèmes de PATH sur macOS (zsh)

Sur macOS récent, le shell par défaut est zsh. Si vous avez installé des outils via Homebrew, assurez-vous que Homebrew est bien dans le PATH :

Apple Silicon (M1/M2/M3) :

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

Intel :

echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/usr/local/bin/brew shellenv)"

Ensuite, vérifiez :

echo $PATH
which docker

4.4 Installation via Homebrew (cas avancé)

En pratique, sur macOS, Compose est surtout via Docker Desktop. Mais si vous utilisez Docker CLI via brew, vous pouvez installer le plugin Compose selon la formule disponible (cela évolue). Vérifiez d’abord :

docker compose version

Si absent, la voie la plus simple reste Docker Desktop.


5) Linux : installer Compose v2 correctement (recommandé)

Sur Linux, l’erreur “commande introuvable” vient souvent d’une installation Docker “Engine” sans plugin Compose.

5.1 Vérifier si le plugin est présent

docker compose version

Si vous obtenez :

5.2 Installation via paquets (Debian/Ubuntu)

Sur Debian/Ubuntu, installez le plugin officiel :

sudo apt update
sudo apt install -y docker-compose-plugin

Vérifiez :

docker compose version

Remarque sur les dépôts Docker

Selon votre distribution, il peut être préférable d’installer Docker depuis les dépôts officiels Docker (plutôt que ceux de la distribution). Mais pour Compose, le paquet docker-compose-plugin est la méthode moderne.

5.3 Installation via paquets (Fedora/RHEL/CentOS)

Selon la distribution :

sudo dnf install -y docker-compose-plugin

Puis :

docker compose version

5.4 Installation manuelle du plugin (si paquet indisponible)

Docker Compose v2 est un plugin placé dans un répertoire spécifique.

Répertoire plugin utilisateur :

Répertoire plugin système (souvent) :

Exemple d’installation manuelle (adaptez la version et l’architecture) :

  1. Créer le dossier :
mkdir -p ~/.docker/cli-plugins
  1. Télécharger le binaire (exemple Linux x86_64) :
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 \
  -o ~/.docker/cli-plugins/docker-compose
  1. Rendre exécutable :
chmod +x ~/.docker/cli-plugins/docker-compose
  1. Vérifier :
docker compose version

5.5 Permissions Docker : ne pas confondre avec “commande introuvable”

Parfois la commande existe, mais vous avez :

Ajoutez votre utilisateur au groupe docker (si pertinent) :

sudo usermod -aG docker $USER
newgrp docker

Puis test :

docker ps

6) Linux : Compose v1 (ancien) — quand et comment

Vous pouvez encore rencontrer des environnements où docker-compose est attendu.

6.1 Installer docker-compose (v1) via paquet (selon distro)

Sur certaines distros :

sudo apt install -y docker-compose
docker-compose --version

Mais attention : ce paquet peut être ancien.

6.2 Installer via pip (déconseillé sauf cas précis)

Compose v1 est un projet Python historique. Installer via pip peut créer des conflits Python.

Exemple (si vous savez ce que vous faites) :

python3 -m pip install --user docker-compose
~/.local/bin/docker-compose --version

Assurez-vous que ~/.local/bin est dans le PATH :

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

6.3 Stratégie recommandée


7) Windows : corriger “n’est pas reconnu en tant que commande”

7.1 Comprendre les environnements Windows

Vous pouvez exécuter Docker depuis :

Et vous pouvez avoir :

7.2 Cas standard : Docker Desktop

  1. Installez Docker Desktop (si pas déjà fait) :
    https://www.docker.com/products/docker-desktop/

  2. Redémarrez le terminal après installation.

  3. Vérifiez dans PowerShell :

docker --version
docker compose version

Si docker est introuvable, c’est souvent un problème de PATH ou d’installation incomplète.

7.3 Vérifier le PATH Windows

Dans PowerShell :

$env:Path -split ';'
Get-Command docker

Si Get-Command docker ne trouve rien :

7.4 Git Bash : attention aux chemins

Dans Git Bash, docker doit être accessible via le PATH Windows. Testez :

docker --version
docker compose version

Si ça ne marche pas dans Git Bash mais marche dans PowerShell, c’est un problème d’héritage de PATH ou de configuration Git Bash.

7.5 WSL : deux stratégies possibles

Stratégie A (recommandée) : utiliser Docker Desktop depuis WSL

Docker Desktop peut exposer le moteur Docker à WSL2.

  1. Dans Docker Desktop :
    Settings → Resources → WSL Integration
    Activez l’intégration pour votre distribution.

  2. Dans WSL :

docker --version
docker compose version
docker ps

Si docker est introuvable dans WSL, il faut parfois installer le CLI dans WSL (selon config). Mais souvent Docker Desktop fournit déjà l’accès.

Stratégie B : installer Docker Engine dans WSL (indépendant)

Vous installez Docker comme sur Linux dans WSL. Dans ce cas, Compose doit être installé dans WSL aussi :

sudo apt update
sudo apt install -y docker-compose-plugin
docker compose version

Attention : vous aurez alors un Docker “Linux dans WSL” séparé de Docker Desktop, avec ses propres images/containers.


8) Cas fréquents et pièges

8.1 Vous avez docker compose mais pas docker-compose

C’est normal en 2026 : Compose v2 est la norme.

Solutions :

8.2 Vous avez installé Compose, mais le shell ne le voit pas

Sur macOS/Linux :

Vérifiez votre shell :

echo $SHELL
ps -p $$ -o comm=

Rechargez le bon fichier :

8.3 Compose plugin installé, mais docker compose ne marche pas

Vérifiez où Docker cherche les plugins :

docker info | sed -n '/Plugins:/,/^$/p'

Et listez les plugins :

ls -la ~/.docker/cli-plugins/

Si le plugin est là mais ne s’exécute pas :

8.4 Erreur “exec format error”

Typique si vous téléchargez le mauvais binaire (ex. x86_64 sur ARM).

Vérifiez l’architecture :

uname -m

8.5 CI/CD : runner minimal sans Compose

Sur un runner Linux minimal, docker peut exister sans Compose.

Ajoutez une étape d’installation :

apt-get update
apt-get install -y docker-compose-plugin
docker compose version

Ou installez le plugin manuellement dans ~/.docker/cli-plugins/.


9) Migration : de docker-compose.yml vers Compose v2

Bonne nouvelle : le fichier s’appelle toujours docker-compose.yml dans la plupart des projets, et Compose v2 le lit très bien.

9.1 Commandes équivalentes

Compose v1Compose v2
docker-compose up -ddocker compose up -d
docker-compose downdocker compose down
docker-compose logs -fdocker compose logs -f
docker-compose builddocker compose build
docker-compose psdocker compose ps

9.2 Exemple réel

Dans un projet contenant un docker-compose.yml :

docker compose up -d
docker compose ps
docker compose logs -f
docker compose down

9.3 Forcer un fichier spécifique

docker compose -f docker-compose.yml -f docker-compose.override.yml up -d

10) Vérification finale : checklist par OS

10.1 macOS

  1. Docker Desktop installé et lancé
  2. Test :
docker --version
docker compose version
docker ps
  1. Optionnel : alias
alias docker-compose='docker compose'

10.2 Linux

  1. Docker Engine installé
  2. Plugin Compose installé :
sudo apt install -y docker-compose-plugin
docker compose version
  1. Permissions daemon :
docker ps

10.3 Windows

  1. Docker Desktop installé et démarré
  2. PowerShell :
docker --version
docker compose version
docker ps
  1. WSL : activer l’intégration et retester dans WSL.

11) Dépannage avancé (commandes utiles)

11.1 Inspecter la version et l’emplacement

macOS/Linux :

which docker
docker --version
docker compose version
docker-compose --version

Windows PowerShell :

Get-Command docker
docker --version
docker compose version

11.2 Vérifier les variables d’environnement

macOS/Linux :

echo $PATH
env | grep -E 'DOCKER|COMPOSE|PATH'

Windows PowerShell :

echo $env:Path
gci env: | ? Name -match 'DOCKER|COMPOSE|PATH'

11.3 Vérifier que le daemon tourne

docker info
docker ps

Si docker info échoue :

sudo systemctl status docker
sudo systemctl start docker

12) Conclusion : la solution la plus robuste en 2026

Si vous me dites :