Bonjour à tous ! Aujourd’hui, on va parler d’orchestration de conteneurs. Vous connaissez sûrement Kubernetes, souvent présenté comme le roi incontesté dans ce domaine. On trouve des chiffres sur internet indiquant que plus de 60% des entreprises l’utiliseraient.
Pourtant, ce n’est pas parce qu’un outil est populaire qu’il est adapté à tous les besoins. Se lancer dans Kubernetes peut représenter un investissement technique et financier important, surtout pour des projets qui n’ont pas besoin de toute sa complexité. La plupart des entreprises, soyons honnêtes, n’ont pas l’échelle de Google ou Shopify. Utiliser Kubernetes pour une application simple, c’est un peu comme acheter un camion de pompier pour éteindre une bougie. C’est efficace, mais probablement surdimensionné.
Heureusement, il existe des alternatives plus simples. Docker Swarm en fait partie. C’est une solution d’orchestration directement intégrée à Docker. Sa mise en place est bien plus directe que celle de Kubernetes, ce qui en fait un candidat intéressant pour les petites et moyennes structures.
Dans ce post, je vais essayer de vous montrer pourquoi Docker Swarm peut être une excellente option et comment l’utiliser simplement pour déployer vos applications.
Pourquoi Kubernetes n’est pas toujours la réponse
Avant de plonger dans Swarm, prenons un peu de recul sur Kubernetes (ou K8s). C’est un projet initialement développé par Google, basé sur leur expérience avec Borg, leur système interne massif pour gérer des millions de conteneurs. K8s a donc été pensé dès le départ pour des infrastructures d’une échelle et d’une complexité que la plupart d’entre nous ne rencontreront jamais.
Quand on conçoit un système pour gérer des services comme Gmail ou YouTube, la simplicité n’est pas la priorité absolue. On ajoute de nombreuses couches et concepts : API server, etcd, kubelet, kube-proxy, scheduler, controller manager… La liste est longue. Le résultat est un outil extrêmement puissant, mais aussi intrinsèquement complexe. Google a ensuite donné K8s à la Cloud Native Computing Foundation (CNCF), et il est devenu le standard de fait, un peu par la force du marketing et de l’effet d’entraînement.
Aujourd’hui, K8s est partout. Il répond très bien à des besoins spécifiques d’automatisation et de gestion à grande échelle. Mais est-il pertinent pour tout ? Imaginons un simple site web statique qui doit juste être toujours disponible. Déployer un cluster Kubernetes complet pour ça semble excessif. On se retrouverait à maintenir une infrastructure complexe dont on n’utilise qu’une fraction des capacités.
Il ne faut pas non plus sous-estimer la courbe d’apprentissage. Kubernetes est un outil professionnel avec ses propres concepts et configurations à maîtriser. Sans une équipe dédiée ou du temps conséquent à y investir, on risque de passer plus de temps à gérer le cluster qu’à développer l’application elle-même.

D’ailleurs, si on regarde les tendances de recherche Google, on voit bien que les gens cherchent activement des alternatives à Kubernetes. Cela suggère que sa complexité pousse certains à explorer d’autres voies, même si l’attrait de la tendance technologique reste fort.
Docker Swarm : l’alternative simple ?
Alors, face à ce constat, que propose Docker Swarm ? C’est une approche différente, bien plus intégrée à l’écosystème Docker que vous utilisez peut-être déjà. On peut oublier la complexité des fichiers YAML à rallonge et les week-ends de débogage réseau. Swarm active un mode “essaim” sur votre Docker Engine.
L’idée est simple : regrouper plusieurs machines équipées de Docker pour former un cluster virtuel unique. Ce cluster peut alors exécuter vos conteneurs en assurant la haute disponibilité et le scaling, mais sans la complexité de K8s. Pour reprendre une image, si K8s est un cockpit d’avion de ligne, Swarm serait plutôt le tableau de bord clair et fonctionnel d’une voiture moderne. Ça fait le travail efficacement, sans nécessiter un diplôme d’ingénieur pour comprendre comment ça fonctionne. Voyons comment cet “outsider” peut nous faciliter la vie.
Comment ça marche ?
La force de Swarm réside dans sa simplicité d’utilisation. Il étend les commandes Docker habituelles à un contexte multi-machines. Pas besoin d’installer une multitude de composants. Pour démarrer, il suffit d’initialiser l’essaim sur la machine qui jouera le rôle de “Manager”. Une seule commande suffit :
$ docker swarm init --advertise-addr <IP_DE_VOTRE_MANAGER>
Swarm initialized: current node (xxxxxxx) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxxxxxx <IP_DE_VOTRE_MANAGER>:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Et voilà, votre Swarm est créé. La sortie vous donne même la commande docker swarm join à copier-coller sur d’autres machines (les “Workers”) pour qu’elles rejoignent le cluster. Docker gère la configuration sécurisée en arrière-plan.
Une fois l’essaim prêt, on déploie des applications via des Services. Un Service décrit comment votre application doit tourner : quelle image utiliser, combien de réplicas, quels ports ouvrir. Par exemple, pour lancer 3 instances Nginx :
$ docker service create --name mon-web --replicas 3 -p 8080:80 nginx:latest
xxxxxxxxxxxx
overall progress: 3 out of 3 tasks
1/3: running [==================================================>]
2/3: running [==================================================>]
3/3: running [==================================================>]
verify: Service converged
Swarm va alors démarrer les conteneurs nécessaires, appelés Tasks (une Task est une instance de votre Service), et les répartir sur les différentes machines du cluster (les Nodes). Le port 8080 sera accessible sur n’importe quel Node, avec une redirection automatique vers un conteneur actif. On peut vérifier l’état des services avec docker service ls et voir où tournent les Tasks individuelles avec docker service ps mon-web. Les concepts clés (Service, Task, Node) sont peu nombreux et logiques. C’est suffisant pour une orchestration sérieuse.
Pourquoi c’est souvent suffisant (et même mieux !)
Cette simplicité ne signifie pas que Swarm est limité. Il couvre très bien les besoins courants d’orchestration. Vous avez besoin de plus de capacité ? La commande docker service scale mon-web=5 ajuste le nombre de réplicas en quelques secondes. Pour déployer une nouvelle version sans coupure, docker service update --image mon-image:nouvelle-version mon-service effectue une mise à jour progressive (rolling update).
La haute disponibilité est gérée nativement. Si un Node tombe, Swarm redéploie automatiquement les Tasks affectées sur les Nodes restants. Si un conteneur plante, il est redémarré. Tout cela sans intervention manuelle. Côté réseau, Swarm crée un réseau virtuel “overlay” qui permet aux conteneurs de communiquer entre eux facilement, même s’ils sont sur des machines différentes.
La gestion des secrets (mots de passe, clés API) et des configurations est aussi intégrée via docker secret create et docker config create. Et si vous utilisez déjà Docker Compose, vous pouvez déployer toute votre stack d’un coup avec docker stack deploy -c votre-compose.yaml nom-de-la-stack. La transition est très naturelle. Pour beaucoup d’applications, Swarm offre la puissance nécessaire sans la complexité associée à K8s.
Mais attends, on m’a dit que Swarm était mort ?
C’est une rumeur tenace, alimentée par l’omniprésence de Kubernetes. Mettons les choses au clair : non, Docker Swarm n’est pas mort. Il est vrai qu’il fait moins parler de lui. Il n’évolue pas à la vitesse de K8s et n’a pas le même écosystème foisonnant d’outils.
Cependant, Swarm reste un projet stable, mature et maintenu, notamment par Mirantis qui a repris la branche entreprise de Docker. Il continue de recevoir des mises à jour et fait partie intégrante du Docker Engine. Son développement est plus calme car il se concentre sur sa mission : l’orchestration simple et efficace. Le fait qu’on en parle moins ne veut pas dire qu’il n’est pas utilisé. De nombreuses structures, surtout celles qui cherchent la simplicité, l’utilisent en production tous les jours, discrètement.
Swarm : le bon outil pour le bon usage
Finalement, le choix entre Swarm et Kubernetes dépend vraiment de vos besoins. Docker Swarm est particulièrement pertinent pour les PME, les équipes réduites, ou les développeurs qui veulent orchestrer leurs applications sans devenir des experts DevOps à plein temps. Si vous connaissez déjà Docker et Compose, passer à Swarm est une étape logique et rapide pour gérer vos applications web ou vos microservices.
C’est un excellent outil pour démarrer des projets rapidement, assurer la haute disponibilité sans complexité excessive, ou simplement pour avoir un environnement de production facile à gérer. Si votre besoin principal est de faire tourner des conteneurs de manière fiable et scalable sans vous perdre dans une myriade d’outils et de concepts, alors Swarm est souvent le choix le plus pragmatique. Pas besoin du camion de pompier quand une lance à incendie suffit.
Conclusion
Voilà, c’est tout pour cet article sur Docker Swarm. J’espère que cela vous a donné une idée claire de ce qu’est Swarm et pourquoi il peut être une alternative intéressante à Kubernetes. Si vous êtes déjà familier avec Docker, je vous encourage à l’essayer. Vous pourriez être surpris par sa simplicité et son efficacité.
Si vous avez des questions ou des retours d’expérience à partager, n’hésitez pas à m’envoyer un message sur LinkedIN.
Merci de m’avoir lu, et à bientôt pour un prochain article !