Running one container is easy.
Running many containers across many servers? That’s where things get messy 😵💫.
This is where Docker Swarm helps.
Docker Swarm is Docker’s built-in orchestration tool. It lets you manage, scale, and keep containers running across multiple machines without headache.
👉 Think of it as Docker with a manager brain 🧠.
In simple words:
📌 Real life:
Modern apps don’t run as one container — they need many copies, on many servers.
✅ Fun fact:
Kubernetes is more powerful, but Docker Swarm is easier to learn and set up, especially if you already know Docker.
Special Docker mode that enables clustering.
docker swarm init
docker swarm initThe brain of the cluster:
📌 Only one leader manager at a time (others are backups).
👉 Manager thinks, workers work 💪
docker swarm init --advertise-addr <IP>
docker swarm init --advertise-addr <IP>This command:
docker swarm join --token <token> <manager-ip>:2377
docker swarm join --token <token> <manager-ip>:2377This connects workers to the manager.
docker node ls
docker node lsShows all nodes and their roles.
In Swarm, you don’t run containers directly.
You create services.
A service says:
👉 “Run this container, this many times, and keep it alive.”
docker service create --replicas 2 -p 80:80 --name myweb nginx
docker service create --replicas 2 -p 80:80 --name myweb nginxWhat happens:
Check services:
docker service ls docker service ps myweb
docker service ls
docker service ps mywebYou decide the number of containers.
--replicas 5
--replicas 5Use case:
Runs one container per node.
Use case:
👉 One agent on every machine.
Need more traffic handling?
docker service scale myweb=5
docker service scale myweb=5Reduce load?
docker service scale myweb=2
docker service scale myweb=2Swarm automatically:
No downtime 😎.
docker service update --image nginx:1.25 myweb
docker service update --image nginx:1.25 mywebSwarm updates containers one by one, safely.
docker service rollback myweb
docker service rollback myweb👉 Like pushing a bad app update and quickly going back to the previous version 🚨.
docker node promote worker2
docker node promote worker2docker node demote manager2
docker node demote manager2Moves workloads away.
docker node update --availability drain worker2
docker node update --availability drain worker2Keeps running tasks, stops new ones.
docker node update --availability pause worker2
docker node update --availability pause worker2🏪 Analogy:
Docker Swarm automatically creates an ingress overlay network.
What this means:
👉 Example: