« Ça marche sur ma machine »
Le problème classique : une appli fonctionne chez le développeur mais casse ailleurs (versions différentes, dépendances manquantes, config). Docker règle cela en empaquetant l'application avec tout son environnement dans un conteneur qui tourne à l'identique partout.
Qu'est-ce qu'un conteneur ?
Un conteneur est un processus isolé qui embarque son code, ses dépendances et sa configuration. Il partage le noyau du système hôte mais s'exécute dans sa propre bulle (fichiers, réseau, processus). Léger et rapide à démarrer.
Conteneur vs machine virtuelle
Une VM virtualise une machine entière (avec son propre OS complet) : lourde, lente à démarrer. Un conteneur partage le noyau de l'hôte : quelques Mo, démarrage en secondes.
| Machine virtuelle | Conteneur |
|---|---|
| OS complet par VM | partage le noyau hôte |
| Go, démarrage en minutes | Mo, démarrage en secondes |
| isolation forte | isolation légère, très efficace |
Image vs conteneur
Deux mots à ne pas confondre : une image est le modèle figé (le « moule »), un conteneur est une instance en cours d'exécution de cette image. On peut lancer plusieurs conteneurs à partir d'une même image.
L'écosystème Docker
- Docker Engine — le moteur qui construit et exécute les conteneurs.
- Docker CLI — les commandes
docker .... - Docker Hub / registre — la bibliothèque publique d'images (mongo, eclipse-temurin, nginx…).
- Docker Compose — orchestrer plusieurs conteneurs (chapitres 6-7).
Le projet a trois couches à faire tourner ensemble : la base MongoDB, l'API Spring et le front web/mobile. Docker va permettre de les démarrer d'une seule commande, à l'identique sur n'importe quelle machine — fini les installations manuelles poste par poste.
- Un conteneur empaquette l'appli + son environnement (reproductible).
- Plus léger et rapide qu'une VM (partage le noyau hôte).
- Image = moule figé ; conteneur = instance en exécution.