Skip to content

Docker Swarm

Docker Swarm cluster

  1. Manager Nodes (atleast one in cluster)
  2. Worker Node

Features of swarm

  1. Simplified setup
  2. Declarative
  3. Scaling
  4. Rolling Updates
  5. Self-Healing
  6. Security
  7. Load Balancing
  8. Service Discovery (Unique DNS names)

Setup Docker Swarm

Step 1:

Deploy Machines (VM or Physical)

Identify if swarm is active or not

docker system info | grep Swarm

:::info If swarm is setup it shows active :::

Open Ports on Docker swarm nodes

Ports Transport Layer Protocol Usage
2377 TCP Cluster Management Communications
7946 TCP and UDP Communication among nodes
4789 UDP Overlay network traffic

Initialize swarm cluster

docker swarm init

:::info This will provide command to connect worker nodes :::

Check if swarm is active

docker system info | grep -i swarm

Add nodes to cluster

Get command to join cluster

docker swarm join-token worker
docker swarm join --token XXXXXXX

List docker nodes

docker node ls

Inspect node

docker node inspect <node-name> --pretty

Activate or Drain nodes in Docker Swarm cluster

To drain a node

docker node update --availability drain workerone

To activate node again

docker node update --availability active workerone

Remove node from cluster

docker swarm leave
docker swarm rm workerone

Promote worker to manager

docker node promote workerone

Demote worker from manager

docker node demote workerone

Locking Docker Swarm nodes

docker swarm init --autolock=true
docker swarm update --autolock=true

Unlock docker swarm node

docker swarm unlock

:::info provide the key :::

Run services on docker swarm nodes

docker service create --replicas=3 httpd

This command calls → API → Orchestrator → Allocator → Dispatcher → Scheduler → Worker Nodes

docker service create --name=firstservice -p 80:80 httpd

Managing Services

List Services

docker service ls

List container in the service

docker service ps firstservice

Details of Service

docker service inspect firstservice --pretty

Check Logs of service

docker service logs firstservice

Delete Service

docker service rm firstservice

Rolling Updates

Deploy App

docker service create -p 80:80 web

:::info If replica is not specified, default is considered 1 :::

Add containers in service (Scale Up)

docker service update --replicas=3 -p 80:80 web

Remove containers from service (Scale down)

docker service update --replicas=1 -p 80:80 web

Update service (Rolling Update)

docker service update -p 80:80 --image=web:2 web

:::info In rolling updates One container is updated first then next, one by one

  • To add delay between updating containers --update-delay 60s
  • To update multiple containers at a time --update-parallelism 3 , update 3 replica at a time
  • If update failed on any container/s then --update-failure-action pause|continue|rollback

    :::

Downgrade the service (Roll Back)

docker service update --rollback web

Types of service

  1. Replicated service (1 if not specified)
  2. Global Service (One node on all nodes of the cluster)

Placement in swarm