Programmation · DevOps · conteneurs
Docker, c’est quoi ?
« Ça marche sur ma machine » est l’une des plus vieilles blagues du logiciel — et le problème que Docker a été conçu pour tuer. Docker empaquette une application avec tout ce dont elle a besoin pour s’exécuter, afin qu’elle se comporte pareil sur un portable, la machine d’un collègue et un serveur de production. Ce guide explique ce qu’est Docker, en quoi les conteneurs diffèrent des machines virtuelles, les concepts qui comptent, et où se situe Docker à côté d’outils comme Kubernetes.
La définition courte
Docker est une plateforme pour construire, partager et exécuter des applications dans des conteneurs. Un conteneur regroupe votre code et ses dépendances — bibliothèques, runtime, configuration — en une unité isolée et portable. Comme le conteneur transporte son propre environnement, il s’exécute pareil partout où Docker est installé, éliminant la catégorie de bugs « ça marche ici mais pas là ».
Conteneurs vs machines virtuelles
Les deux isolent le logiciel, mais à des niveaux différents. Une machine virtuelle émule un ordinateur entier, avec son propre système d’exploitation complet, au-dessus d’un hyperviseur — puissant, mais lourd : chaque VM pèse des gigaoctets et démarre lentement. Un conteneur partage le noyau du système d’exploitation de la machine hôte et n’empaquette que l’appli et ses dépendances. Résultat bien plus léger : les conteneurs pèsent typiquement des mégaoctets, démarrent en quelques secondes, et on peut en faire tourner bien plus sur le même matériel.
Le compromis, c’est l’isolation. Les VM offrent une séparation plus forte car chacune a son propre OS ; les conteneurs sont plus efficaces mais partagent le noyau, donc l’isolation est bonne plutôt qu’absolue. Beaucoup de systèmes réels utilisent les deux — des conteneurs tournant dans des VM dans le cloud.

Les concepts clés
- Image — un modèle en lecture seule qui définit ce qu’il y a dans un conteneur : les couches d’OS, votre appli et ses dépendances. On construit une image une fois et on lance plusieurs conteneurs à partir d’elle.
- Conteneur — une instance en cours d’exécution d’une image. C’est le processus vivant et isolé ; on peut le démarrer, l’arrêter et le supprimer sans toucher à l’image.
- Dockerfile — une recette en texte brut listant les étapes pour construire une image (partir d’une base, copier le code, installer les dépendances, définir la commande de démarrage). Elle rend les builds reproductibles.
- Registre — un dépôt d’images. Docker Hub est le registre public le plus connu ; les équipes en exploitent aussi de privés. On pousse les images pour les partager et on les tire pour les exécuter.
- Volume — un stockage qui vit en dehors du cycle de vie du conteneur, pour que les données survivent au remplacement d’un conteneur. Les conteneurs sont jetables ; les volumes conservent ce qui doit persister.
À quoi ressemble un flux de travail typique
Vous écrivez un Dockerfile, vous le construisez en image, et vous exécutez cette image comme conteneur. En local, vous lancez peut-être un seul conteneur ; en production, vous poussez l’image vers un registre et l’exécutez sur des serveurs. Comme l’image est le même artefact partout, l’appli que vos collègues et vos serveurs exécutent est, octet pour octet, celle que vous avez testée — c’est tout l’intérêt.
Pourquoi Docker compte
Il a rendu les environnements cohérents faciles, et cela a débloqué beaucoup de choses : des déploiements de service à service fiables, une prise en main rapide (une commande au lieu d’une page d’étapes de configuration), et le socle des pipelines CI/CD et des microservices. Les conteneurs sont désormais l’unité de déploiement par défaut dans l’infrastructure moderne, ce qui explique pourquoi tout l’écosystème — registres, orchestration, runtimes cloud — parle « conteneur ».
Docker vs Kubernetes
On les cite souvent ensemble mais ils résolvent des problèmes différents. Docker construit et exécute des conteneurs individuels. Kubernetes est un orchestrateur : il exécute et coordonne de nombreux conteneurs sur de nombreuses machines — les planifie, redémarre ceux qui échouent, monte et descend en charge, et les met en réseau. En bref, Docker empaquette et exécute un conteneur ; Kubernetes gère une flotte. On peut utiliser Docker sans Kubernetes ; Kubernetes exécute des conteneurs construits selon le même standard que Docker a popularisé. Voyez notre guide complet sur Kubernetes — et dans tous les cas, vos conteneurs ont besoin d'un endroit où tourner, généralement un VPS.
Les compromis honnêtes
Docker n’est pas sans coût. Les conteneurs partagent le noyau hôte : ce n’est donc pas une frontière de sécurité dure comme l’est une VM — les charges sensibles peuvent vouloir une isolation de niveau VM. Les applications à état (bases de données, tout ce qui a des données locales importantes) demandent une conception soignée des volumes et des sauvegardes, puisque les conteneurs sont censés être jetables. Et il y a une courbe d’apprentissage : images, réseau et volumes prennent du temps à assimiler. Pour la plupart des équipes, la cohérence et la rapidité en valent toutefois la peine.
FAQ
Docker est-il une machine virtuelle ? Non. Une VM émule un ordinateur entier avec son propre système d’exploitation ; un conteneur Docker partage le noyau de l’OS hôte et n’empaquette que l’appli et ses dépendances, ce qui le rend bien plus léger et rapide à démarrer.
Docker est-il gratuit ? Docker Engine, la technologie de base, est open-source et gratuit. Docker propose aussi des offres payantes pour son application Desktop et ses services dans les grandes organisations, mais on peut construire et exécuter des conteneurs sans payer.
Faut-il Docker pour utiliser Kubernetes ? Pas Docker le produit en particulier, mais il faut des conteneurs. Kubernetes orchestre des conteneurs construits selon des standards ouverts que Docker a aidé à établir, donc les compétences se transfèrent directement.
Qu’est-ce qu’un Dockerfile ? Un fichier en texte brut avec les étapes pour construire une image — quelle base utiliser, quel code copier, quelles dépendances installer, et la commande à exécuter. Il rend les builds d’image reproductibles et relisibles.
Les conteneurs sont l’unité sur laquelle reposent les déploiements ; les applis qu’ils contiennent exposent souvent une API et s’écrivent dans un IDE. Parcourez d’autres explications claires dans notre index des guides.
Questions fréquentes
Docker, c’est quoi en termes simples ?
Docker est un outil qui empaquette une application avec tout ce dont elle a besoin pour s’exécuter — code, bibliothèques, runtime et configuration — en une unité portable unique appelée conteneur. Ce conteneur s’exécute ensuite de la même façon sur toute machine où Docker est installé, de sorte que le logiciel se comporte à l’identique sur le portable d’un développeur et sur un serveur de production.
Quelle est la différence entre un conteneur et une machine virtuelle ?
Une machine virtuelle émule un ordinateur entier, système d’exploitation complet inclus : elle est donc volumineuse (gigaoctets) et lente à démarrer, mais fortement isolée. Un conteneur partage le noyau du système hôte et ne regroupe que l’appli et ses dépendances : il est petit (mégaoctets), démarre en quelques secondes et plus efficace, avec une isolation bonne mais non absolue. Beaucoup de systèmes exécutent des conteneurs dans des VM pour combiner les deux.
Quelle est la différence entre Docker et Kubernetes ?
Docker construit et exécute des conteneurs individuels. Kubernetes est un système d’orchestration qui exécute et coordonne de nombreux conteneurs sur de nombreuses machines — planification, mise à l’échelle, redémarrage et mise en réseau. Docker gère un conteneur ; Kubernetes gère une flotte. Ils sont complémentaires plutôt que concurrents.
Docker est-il toujours utilisé en 2026 ?
Oui. Les conteneurs sont l’unité standard de déploiement dans le logiciel moderne, et l’écosystème — registres, pipelines CI/CD, runtimes cloud et orchestrateurs comme Kubernetes — est bâti autour du modèle de conteneur que Docker a popularisé. Le cœur Docker Engine reste open-source et largement utilisé.