6. Docker Swarm

🐳 Docker Swarm – Container Orchestration Made Simple

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 🧠.


⚡ What is Docker Swarm?

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.

🍕 Easy Analogy


🧩 Core Concepts in Docker Swarm

Swarm Mode

Special Docker mode that enables clustering.

docker swarm init
docker swarm init

Manager Node

The brain of the cluster:

📌 Only one leader manager at a time (others are backups).


Worker Node

👉 Manager thinks, workers work 💪


🚀 Setting Up Docker Swarm

On Manager Node

docker swarm init --advertise-addr <IP>
docker swarm init --advertise-addr <IP>

This command:


On Worker Nodes

docker swarm join --token <token> <manager-ip>:2377
docker swarm join --token <token> <manager-ip>:2377

This connects workers to the manager.


Verify Cluster

docker node ls
docker node ls

Shows all nodes and their roles.


🛠️ Services in Docker Swarm

In Swarm, you don’t run containers directly.
You create services.

A service says:
👉 “Run this container, this many times, and keep it alive.”

Example

docker service create --replicas 2 -p 80:80 --name myweb nginx
docker service create --replicas 2 -p 80:80 --name myweb nginx

What happens:

Check services:

docker service ls
docker service ps myweb
docker service ls
docker service ps myweb

📦 Service Modes

Replicated Mode

You decide the number of containers.

--replicas 5
--replicas 5

Use case:


Global Mode

Runs one container per node.

Use case:

👉 One agent on every machine.


📈 Scaling Services (Very Easy)

Need more traffic handling?

docker service scale myweb=5
docker service scale myweb=5

Reduce load?

docker service scale myweb=2
docker service scale myweb=2

Swarm automatically:

No downtime 😎.


🔄 Updating & Rolling Back Services

Update Service Image

docker service update --image nginx:1.25 myweb
docker service update --image nginx:1.25 myweb

Swarm updates containers one by one, safely.


Rollback if Something Breaks

docker service rollback myweb
docker service rollback myweb

👉 Like pushing a bad app update and quickly going back to the previous version 🚨.


🧑‍💻 Node Management

Promote Worker to Manager

docker node promote worker2
docker node promote worker2

Demote Manager to Worker

docker node demote manager2
docker node demote manager2

Drain a Node

Moves workloads away.

docker node update --availability drain worker2
docker node update --availability drain worker2

Pause a Node

Keeps running tasks, stops new ones.

docker node update --availability pause worker2
docker node update --availability pause worker2

🏪 Analogy:


🌐 Networking in Docker Swarm

Docker Swarm automatically creates an ingress overlay network.

What this means:

👉 Example: