
Dans cet article
- Docker est un outil de conteneurisation qui empaquette une application et ses dépendances dans un conteneur isolé
- Kubernetes est un orchestrateur de conteneurs qui gère le déploiement, la mise à l’échelle et la disponibilité de dizaines ou milliers de conteneurs
- Les deux outils sont complémentaires, pas concurrents : Kubernetes utilise un runtime de conteneurs (comme containerd) pour fonctionner
- Docker Compose convient aux projets de 1 à 10 conteneurs, Kubernetes prend le relais au-delà avec le load balancing et l’auto-scaling
- En production, plus de 60 % des entreprises utilisant des conteneurs s’appuient sur Kubernetes selon la CNCF
- Pour un développeur web, maîtriser Docker est un prérequis indispensable avant d’aborder Kubernetes
Sommaire
- Docker et Kubernetes : définitions claires
- Les différences fondamentales entre Kubernetes et Docker
- Tableau comparatif Kubernetes vs Docker
- Quand utiliser Docker seul et quand passer à Kubernetes
- Kubernetes et Docker : des outils complémentaires en pratique
- Alternatives : Podman, Docker Swarm et autres orchestrateurs
- Comment démarrer avec la conteneurisation en 2026
- Ce qu’il faut retenir
Quand j’ai commencé à travailler avec des conteneurs en 2017, la confusion entre Docker et Kubernetes revenait dans chaque discussion d’équipe. Aujourd’hui encore, je vois régulièrement des développeurs qui opposent ces deux technologies alors qu’elles répondent à des besoins très différents. Après plusieurs années à déployer des applications PHP/Symfony et WordPress avec ces outils, je vais vous expliquer concrètement ce qui les distingue et comment les utiliser ensemble.
Docker et Kubernetes : définitions claires
Docker : la conteneurisation simplifiée
Docker est une plateforme de conteneurisation qui permet d’empaqueter une application avec toutes ses dépendances dans un conteneur léger et portable. Concrètement, quand je développe une application Symfony, je crée un fichier Dockerfile qui décrit l’environnement exact dont mon application a besoin : version de PHP, extensions, configuration Apache ou Nginx, variables d’environnement.
Le conteneur Docker fonctionne de manière isolée du système hôte. Cela signifie que mon application tourne de la même façon sur ma machine de développement, sur le serveur de staging et en production. Fini le fameux « ça marche sur ma machine ». Docker utilise le noyau Linux du système hôte et partage ses ressources, ce qui le rend bien plus léger qu’une machine virtuelle classique.
Un conteneur Docker se lance en quelques secondes, consomme peu de mémoire et peut être détruit puis recréé à volonté. C’est cette légèreté qui a révolutionné le déploiement d’applications depuis la sortie de Docker en 2013.

Kubernetes : l’orchestration à grande échelle
Kubernetes (souvent abrégé K8s) est un système d’orchestration de conteneurs développé à l’origine par Google, puis donné à la Cloud Native Computing Foundation (CNCF). Son rôle n’est pas de créer des conteneurs, mais de gérer leur cycle de vie à grande échelle : déploiement, mise à l’échelle automatique, répartition de charge, redémarrage en cas de panne et mises à jour sans interruption de service.
Pour faire une analogie simple : si Docker est le format d’un conteneur maritime, Kubernetes est le système de gestion du port qui décide où placer chaque conteneur, surveille leur état et en commande de nouveaux quand la demande augmente. C’est un outil pensé pour gérer des architectures composées de dizaines, centaines, voire milliers de conteneurs répartis sur plusieurs serveurs.
Kubernetes ne dépend pas directement de Docker. Il utilise un runtime de conteneurs compatible avec la spécification CRI (Container Runtime Interface). Depuis la version 1.24, Kubernetes a d’ailleurs retiré le support natif de Docker (dockershim) au profit de runtimes comme containerd ou CRI-O. En pratique, les images Docker restent parfaitement compatibles puisqu’elles suivent le standard OCI.
Les différences fondamentales entre Kubernetes et Docker
Portée et objectif
La première différence majeure tient à la portée de chaque outil. Docker s’occupe d’un seul conteneur à la fois : le construire, le lancer, l’arrêter, le supprimer. Docker Compose étend cette capacité à plusieurs conteneurs sur une même machine, ce qui couvre la plupart des besoins en développement et pour des projets de taille modeste.
Kubernetes opère à un niveau supérieur. Il gère des clusters de machines (appelées nœuds) et distribue les conteneurs intelligemment entre ces nœuds. Si un serveur tombe en panne, Kubernetes déplace automatiquement les conteneurs vers un autre nœud fonctionnel. Cette capacité d’auto-réparation est l’un de ses atouts majeurs, comme le détaille la documentation officielle de Kubernetes.
Architecture
L’architecture de Docker est relativement simple : un daemon Docker tourne sur la machine hôte, écoute les commandes du client Docker et gère les conteneurs localement. C’est une architecture client-serveur directe.
Kubernetes repose sur une architecture maître-esclave bien plus complexe. Le plan de contrôle (control plane) comprend l’API Server, le scheduler, le controller manager et etcd (la base de données distribuée). Les nœuds de travail (worker nodes) exécutent les conteneurs via un composant appelé kubelet. Cette complexité se justifie par la capacité à gérer des infrastructures distribuées à grande échelle.
Réseau et stockage
Docker fournit un réseau simple entre conteneurs sur une même machine via des bridge networks. Kubernetes va beaucoup plus loin avec un modèle réseau qui permet à chaque pod (groupe de conteneurs) de communiquer avec n’importe quel autre pod du cluster, quelle que soit la machine physique. Kubernetes propose aussi des Services pour exposer les applications et des Ingress pour gérer le routage HTTP.
Pour le stockage, Docker utilise des volumes simples montés sur la machine hôte. Kubernetes propose des Persistent Volumes et des Persistent Volume Claims qui abstraient le stockage et permettent de le provisionner dynamiquement, que ce soit sur un disque local, un NFS ou un stockage cloud comme AWS EBS ou Google Persistent Disk.

Courbe d’apprentissage
Je ne vais pas vous mentir : la courbe d’apprentissage est radicalement différente. Un développeur web peut être opérationnel avec Docker en quelques jours. Écrire un Dockerfile, lancer un docker-compose up et comprendre les volumes et les réseaux de base prend généralement une semaine de pratique. Si vous débutez dans cet univers, comprendre les fondamentaux de Git et ses différentes plateformes est un bon point de départ pour la culture DevOps.
Kubernetes demande un investissement bien plus conséquent. Il faut comprendre les concepts de pods, deployments, services, ingress, configmaps, secrets, namespaces, RBAC, et bien d’autres ressources. Comptez plusieurs semaines à plusieurs mois pour être vraiment à l’aise, même avec une expérience Docker solide.
Tableau comparatif Kubernetes vs Docker
Pour y voir plus clair, voici un comparatif détaillé des deux technologies sur les critères qui comptent au quotidien.
| Critère | Docker (avec Compose) | Kubernetes |
|---|---|---|
| Fonction principale | Créer et exécuter des conteneurs | Orchestrer des conteneurs à grande échelle |
| Mise à l’échelle | Manuelle, limitée à une machine | Automatique (HPA), multi-nœuds |
| Haute disponibilité | Non native | Intégrée (réplication, auto-healing) |
| Load balancing | Basique via reverse proxy | Natif avec Services et Ingress |
| Rolling updates | Manuel ou via scripts | Natif et configurable |
| Complexité | Faible à modérée | Élevée |
| Temps d’apprentissage | Quelques jours | Plusieurs semaines à mois |
| Idéal pour | Dev local, petits projets, CI/CD | Production à grande échelle, microservices |
| Coût d’infrastructure | Un seul serveur suffit | Minimum 3 nœuds recommandés |
| Monitoring intégré | Basique (docker stats) | Avancé (Prometheus, Grafana) |
| Gestion des secrets | Variables d’environnement | Secrets natifs chiffrés |
Quand utiliser Docker seul et quand passer à Kubernetes
Docker suffit dans ces situations
Dans ma pratique quotidienne, Docker Compose couvre 80 % de mes besoins. Pour développer en local, lancer un environnement avec PHP, MySQL, Redis et Nginx en une seule commande, Docker Compose est imbattable. Voici les cas où Docker seul fait parfaitement l’affaire :
- Environnements de développement : chaque développeur lance le même stack avec
docker-compose up - Applications monolithiques : un WordPress, un Symfony ou un Laravel qui tourne avec 3 à 5 conteneurs
- Pipelines CI/CD : exécuter des tests dans des conteneurs jetables
- Petits projets en production : un site vitrine, un blog, une application interne avec peu de trafic
- Prototypage rapide : tester une stack technique sans polluer sa machine
Pour un site WordPress hébergé sur un VPS, Docker Compose avec un conteneur PHP-FPM, un MariaDB et un Nginx suffit amplement. Si vous souhaitez aller plus loin dans la configuration de votre serveur, consultez mon guide pour configurer un VPS Linux de A à Z.
Kubernetes devient nécessaire quand…
Le passage à Kubernetes se justifie dans des contextes bien précis. Voici les signaux qui indiquent qu’il est temps de franchir le pas :
- Votre application dépasse 10 à 15 microservices et leur gestion manuelle devient ingérable
- Vous avez besoin d’auto-scaling pour absorber des pics de trafic
- La haute disponibilité est critique : zéro tolérance aux interruptions de service
- Vous déployez sur plusieurs régions géographiques
- Votre équipe comprend au moins un profil DevOps ou SRE capable de maintenir le cluster
J’insiste sur ce dernier point. Kubernetes sans personne pour le maintenir est une source de problèmes, pas de solutions. Si vous envisagez une carrière DevOps, découvrez mes conseils pour décrocher une alternance DevOps ; la maîtrise de Kubernetes y est un atout considérable.
Kubernetes et Docker : des outils complémentaires en pratique
La question « Kubernetes vs Docker » est en réalité mal posée. Ces deux technologies ne sont pas en concurrence, elles occupent des niveaux différents dans la pile technique. Voici comment elles s’articulent dans un workflow réel.
Le workflow typique
En pratique, sur les projets où j’interviens, le workflow se déroule ainsi :
- Développement local : les développeurs utilisent Docker et Docker Compose pour lancer l’application sur leur machine
- Construction d’image : un pipeline CI (GitLab CI, GitHub Actions) build l’image Docker et la pousse dans un registry (Docker Hub, GitLab Registry, AWS ECR)
- Déploiement : Kubernetes tire l’image depuis le registry et déploie les conteneurs sur le cluster de production
- Exploitation : Kubernetes gère la réplication, le load balancing, les mises à jour et la surveillance
Docker intervient à l’étape de construction et de packaging. Kubernetes prend le relais pour l’exécution et l’exploitation. Les deux collaborent, ils ne s’excluent pas. Pour gérer efficacement le code source de ces projets, il est essentiel de bien maîtriser les outils de versioning, comme je l’explique dans mon comparatif Git vs GitHub vs GitLab.

L’abandon de dockershim : ce que ça change vraiment
En 2022, Kubernetes a retiré le support direct de Docker comme runtime de conteneurs (dockershim) à partir de la version 1.24. Cette annonce a provoqué une certaine panique dans la communauté, mais en réalité, l’impact pour les développeurs est quasi nul.
Les images Docker restent 100 % compatibles avec Kubernetes. La seule différence est que Kubernetes utilise désormais containerd directement (le composant qui était déjà utilisé par Docker sous le capot) au lieu de passer par la couche Docker complète. En tant que développeur, vous continuez à écrire vos Dockerfiles et à builder vos images exactement de la même façon.
Alternatives : Podman, Docker Swarm et autres orchestrateurs
Podman : l’alternative rootless à Docker
Podman est un outil développé par Red Hat qui permet de créer et gérer des conteneurs sans daemon root. C’est une alternative de plus en plus populaire à Docker, notamment dans les environnements où la sécurité est une priorité. Podman est compatible avec les Dockerfiles et les images Docker ; vous pouvez souvent remplacer docker par podman dans vos commandes sans autre modification.
Son principal avantage est l’exécution rootless par défaut, ce qui réduit la surface d’attaque. Pour les équipes soucieuses de la sécurité de leur infrastructure, c’est un argument de poids. Podman propose aussi podman-compose comme équivalent de Docker Compose, bien que moins mature.
Docker Swarm : l’orchestration simplifiée
Docker Swarm est l’outil d’orchestration intégré à Docker. Il est beaucoup plus simple que Kubernetes à mettre en place et à gérer. On peut activer un cluster Swarm en une seule commande (docker swarm init) et déployer des stacks avec des fichiers Docker Compose légèrement modifiés.
Cependant, Docker Swarm a perdu du terrain face à Kubernetes. L’écosystème, la communauté et le support des cloud providers sont massivement en faveur de Kubernetes. En 2026, je recommande Docker Swarm uniquement pour des petites équipes qui veulent de l’orchestration légère sans la complexité de K8s, typiquement pour des projets avec 5 à 20 conteneurs répartis sur 2 à 3 serveurs.
Services managés : simplifier Kubernetes
Si la complexité de Kubernetes vous freine, les services Kubernetes managés des cloud providers allègent considérablement la charge opérationnelle. AWS propose EKS, Google Cloud propose GKE, Azure propose AKS, et OVHcloud propose son propre service Kubernetes managé. Ces services gèrent le plan de contrôle pour vous ; il ne vous reste qu’à définir vos workloads.
Pour les projets de taille intermédiaire, des plateformes comme Railway, Render ou Fly.io offrent une expérience de déploiement conteneurisée sans avoir à toucher à Kubernetes directement. Elles constituent un excellent compromis entre la simplicité de Docker Compose et la puissance de K8s. Si vous gérez un site WordPress en production, un bon hébergeur spécialisé reste souvent plus pertinent, comme je le détaille dans mon comparatif Kinsta vs WP Engine.
Comment démarrer avec la conteneurisation en 2026
Étape 1 : maîtriser Docker
Avant toute chose, apprenez Docker. C’est la base indispensable. Voici les compétences à acquérir en priorité :
- Écrire un Dockerfile optimisé (multi-stage builds, gestion du cache, images légères)
- Utiliser Docker Compose pour orchestrer plusieurs conteneurs en local
- Comprendre les volumes pour la persistance des données
- Maîtriser les réseaux Docker pour la communication inter-conteneurs
- Savoir débugger un conteneur (logs, exec, inspect)
Commencez par conteneuriser un projet existant. Si vous travaillez avec WordPress, empaquetez votre environnement local avec Docker Compose. Si vous êtes sur Symfony ou Laravel, faites la même chose. L’apprentissage par la pratique est de loin le plus efficace. Pour surveiller les performances de vos conteneurs, des outils comme cAdvisor ou Prometheus seront vos alliés.
Étape 2 : passer à Kubernetes quand c’est justifié
Une fois Docker maîtrisé, abordez Kubernetes uniquement si votre projet le nécessite. Ne tombez pas dans le piège du CV-driven development. Voici un parcours d’apprentissage pragmatique :
- Minikube ou Kind : installez un cluster Kubernetes local pour expérimenter
- kubectl : apprenez les commandes de base pour interagir avec le cluster
- Pods et Deployments : déployez une application simple
- Services et Ingress : exposez votre application au monde extérieur
- Helm : découvrez le gestionnaire de packages Kubernetes pour simplifier les déploiements
Le tutoriel officiel Kubernetes Basics est un excellent point de départ. Il est gratuit et couvre les fondamentaux en quelques heures de pratique.
Docker Compose vs Kubernetes : le cas concret d’un projet web
Pour illustrer la différence, prenons un projet e-commerce classique avec une boutique WooCommerce. En développement et pour un petit site en production, un fichier docker-compose.yml avec WordPress, MariaDB, Redis et Nginx suffit. Le déploiement se fait en une commande, la maintenance est simple.
Si cette boutique doit supporter des milliers de visiteurs simultanés, avec zéro downtime lors des mises à jour et un failover automatique, alors Kubernetes entre en jeu. On définit des Deployments avec plusieurs réplicas, un HorizontalPodAutoscaler pour absorber les pics de trafic, et un Ingress Controller pour distribuer la charge. Le coût en complexité est réel, mais la résilience est incomparable.
Ce qu’il faut retenir
À retenir
- Commencez toujours par maîtriser Docker et Docker Compose avant d’envisager Kubernetes
- Évaluez si votre projet dépasse 10 conteneurs et nécessite de l’auto-scaling avant de passer à K8s
- Privilégiez un service Kubernetes managé (EKS, GKE, AKS) plutôt que de gérer votre propre cluster
- Envisagez Podman comme alternative rootless à Docker pour renforcer la sécurité
- Automatisez vos déploiements avec un pipeline CI/CD qui build les images Docker et déploie sur Kubernetes
Questions fréquentes
Kubernetes et Docker, est-ce la même chose ?
Non, Docker et Kubernetes ne sont pas la même chose. Docker est un outil de conteneurisation qui empaquette une application dans un conteneur isolé. Kubernetes est un orchestrateur qui gère le déploiement et la mise à l’échelle de multiples conteneurs sur un cluster de serveurs. Docker crée les conteneurs, Kubernetes les organise et les supervise. Les deux sont complémentaires et s’utilisent souvent ensemble dans une chaîne de déploiement complète.
Est-ce que Kubernetes a remplacé Docker ?
Non, Kubernetes n’a pas remplacé Docker. En 2022, Kubernetes a retiré dockershim (le support direct de Docker comme runtime), mais cela ne signifie pas que Docker est obsolète. Les images Docker restent 100 % compatibles avec Kubernetes via le standard OCI. Docker reste l’outil de référence pour créer des images de conteneurs et pour le développement local. Kubernetes utilise simplement containerd directement au lieu de passer par la couche Docker complète.
Peut-on apprendre Kubernetes en 2 jours ?
En 2 jours, vous pouvez comprendre les concepts fondamentaux de Kubernetes (pods, deployments, services) et déployer une application simple sur un cluster local avec Minikube. Cependant, maîtriser Kubernetes en production demande plusieurs semaines à plusieurs mois de pratique. La gestion du réseau, du stockage, de la sécurité (RBAC), du monitoring et du troubleshooting nécessite une expérience approfondie. Je recommande de commencer par Docker, puis d’aborder Kubernetes progressivement.
Est-ce que Kubernetes devient obsolète ?
Absolument pas. Kubernetes est aujourd’hui le standard de facto pour l’orchestration de conteneurs, soutenu par la CNCF et adopté par tous les grands cloud providers (AWS, Google Cloud, Azure). Son écosystème continue de croître avec des outils comme Helm, Istio, ArgoCD et Knative. Ce qui évolue, ce sont les couches d’abstraction au-dessus de K8s (plateformes PaaS, serverless containers) qui simplifient son utilisation sans le remplacer.
Docker Compose ou Kubernetes pour un projet web classique ?
Pour un projet web classique (site vitrine, blog, petite boutique en ligne), Docker Compose suffit largement. Il est simple à configurer, rapide à déployer et ne nécessite qu’un seul serveur. Kubernetes se justifie à partir du moment où vous gérez plus de 10 microservices, où vous avez besoin d’auto-scaling ou de haute disponibilité garantie. Le critère clé est la taille de l’équipe et du projet : sans profil DevOps dédié, Kubernetes sera plus un frein qu’un accélérateur.
Quelle est la différence entre Docker Compose et Kubernetes ?
Docker Compose orchestre plusieurs conteneurs sur une seule machine via un fichier YAML simple. Kubernetes orchestre des conteneurs sur un cluster de machines avec auto-scaling, load balancing, auto-healing et rolling updates intégrés. Docker Compose convient au développement local et aux petites productions. Kubernetes est conçu pour les environnements de production exigeants où la disponibilité et la scalabilité sont critiques.
Ingénieur système et expert hébergement web. Fondateur de web-city.fr, il partage guides pratiques, comparatifs objectifs et outils gratuits pour choisir le bon hébergeur et créer son site WordPress.