C'est quoi Docker ?
Le problème classique
Tu développes une app sur ton ordi. Elle tourne parfaitement. Tu la déploies sur le serveur. Elle plante. La raison : la version de Node est différente. La config PHP diverge. Une lib est manquante. Un chemin n'est pas le même.
Ce scénario a un nom dans le monde du dev : "Works on my machine". C'est le cauchemar de tout développeur et ops depuis des décennies.
Sans Docker, tu dois documenter précisément l'environnement, l'installer manuellement sur chaque machine, et espérer que rien ne diverge. Sur dix serveurs, tu auras dix configurations légèrement différentes.
Docker, c'est quoi exactement ?
Docker est une plateforme de conteneurisation. Elle te permet d'empaqueter ton application avec tout ce dont elle a besoin — runtime, bibliothèques, configuration — dans un conteneur. Ce conteneur s'exécute de façon identique partout : ton laptop, un serveur, le cloud.
Pense-y comme à un container maritime. Peu importe ce qu'il y a dedans, il s'empile, se transporte et s'ouvre de la même façon partout dans le monde. Le contenu est isolé, protégé, standardisé.
Docker fonctionne sur Linux, macOS et Windows. La grande majorité des images Docker sont basées sur Linux — même sur Windows ou Mac, Docker fait tourner un noyau Linux en coulisses.
Conteneurs vs machines virtuelles
On confond souvent conteneurs et VMs. Ce sont deux approches d'isolation différentes.
Conteneur Docker
Partage le noyau Linux de l'hôte. Démarre en secondes. Léger (quelques Mo). Isolation au niveau des processus.
Machine Virtuelle
OS complet virtualisé. Démarre en minutes. Lourd (Go). Isolation matérielle complète. Plus sécurisé mais plus lent.
Pour la plupart des workloads applicatifs, les conteneurs sont largement suffisants. Les VMs restent pertinentes pour des niveaux d'isolation plus forts (multi-tenant, sécurité critique).
L'architecture Docker Engine
Docker fonctionne en mode client-serveur :
- Docker CLI : le client que tu utilises en ligne de commande (
docker run,docker build…) - Docker Daemon (dockerd) : le serveur qui gère les conteneurs, images et réseaux en arrière-plan
- Docker Hub : le registre public où sont stockées les images (comme GitHub pour les images)
# Ton premier conteneur Docker
docker run hello-world
# Docker télécharge l'image, crée un conteneur, l'exécute
Hello from Docker!
This message shows that your installation appears to be working correctly.
Pourquoi c'est le standard du déploiement
En 2013, Docker a révolutionné la façon de déployer des applications. Aujourd'hui, quasiment tous les services cloud (AWS, GCP, Azure) supportent Docker nativement. Kubernetes, le standard d'orchestration de conteneurs, est bâti dessus.
- Reproductible : même comportement dev, staging, prod.
- Portable : fonctionne sur n'importe quel serveur Linux.
- Scalable : lance 10, 100, 1000 instances identiques en secondes.
- Isolé : chaque service dans son conteneur, pas d'interférence.
Docker a été créé par Solomon Hykes et lancé en 2013. En 10 ans, il est devenu l'outil incontournable du DevOps. Même si Kubernetes ou Podman peuvent le remplacer dans certains contextes, Docker reste la référence pour apprendre la conteneurisation.
- Docker résout le problème "works on my machine" en packager l'app avec son environnement.
- Un conteneur partage le noyau Linux de l'hôte — plus léger et rapide qu'une VM.
- Docker CLI envoie des commandes au Docker Daemon qui gère les conteneurs.
- Docker Hub est le registre public des images Docker.
- Docker est le standard du déploiement moderne : cloud, CI/CD, Kubernetes.