---
title: Docker Engine et Docker Desktop
description: Distinguer le moteur Docker de l'application qui l'exécute sur Mac et Windows.
---

## Docker Engine

Docker Engine est le cœur de Docker. Il comprend :

- le daemon `dockerd`, qui construit les images et fait tourner les conteneurs ;
- la CLI `docker`, utilisée depuis le terminal pour parler au daemon.

Docker Engine est nativement Linux. Il s'appuie sur des fonctionnalités du noyau Linux, notamment les namespaces et les cgroups.

## Sur Mac et Windows

Le noyau requis étant un noyau Linux, Docker fait tourner une petite VM Linux en arrière-plan. Docker Engine vit dans cette VM et les conteneurs tournent dans ce Linux, pas directement dans macOS ou Windows.

Docker Desktop orchestre cet ensemble :

- il crée et maintient la VM Linux ;
- il expose la commande `docker` dans le terminal hôte ;
- il fournit une interface graphique ;
- il gère le partage des fichiers et des ports entre l'hôte et la VM.

| Plateforme | Où tourne Docker Engine ? |
| --- | --- |
| Linux | Directement sur le système hôte |
| macOS | Dans la VM Linux gérée par Docker Desktop |
| Windows | Dans la VM Linux gérée par Docker Desktop |

## Conséquences pratiques

### Bind mounts sur Mac et Windows

Quand un dossier de l'hôte est monté dans un conteneur, les fichiers traversent la frontière entre l'hôte et la VM Linux. Les entrées-sorties peuvent être moins rapides qu'avec un accès Linux natif, notamment sur de gros dossiers comme `node_modules`.

### Volumes Docker

Un volume Docker vit dans le système de fichiers du Docker Engine. Sur Mac et Windows, il se trouve donc dans la VM Linux. Il reste rapide et persiste indépendamment du dossier du projet.

### Serveur Linux

Sur un VPS Linux de production, il n'y a pas cette VM intermédiaire : Docker Engine tourne directement sur l'OS. C'est le cas le plus simple et le plus efficace.

<Callout title="À retenir" type="info">
  Docker Desktop n'est pas le moteur lui-même. C'est l'application qui rend Docker Engine utilisable sur Mac et Windows en gérant une VM Linux discrète.
</Callout>
