Docker Swarm Mode is Docker’s native clustering and orchestration solution. It allows you to manage a group of Docker nodes as a single virtual system, enabling high availability, load balancing, and simplified deployment of containerized applications.
Key features:
Initialize Swarm
docker swarm init
Join Swarm (on worker/manager node)
docker swarm join-token worker
Leave Swarm
docker swarm leave
Force Leave (on manager)
docker swarm leave --force
List nodes
docker node ls
Promote node to manager
docker node promote <node-name>
Demote node to worker
docker node demote <node-name>
Inspect node
docker node inspect <node-name> --pretty
Drain node (prevent scheduling)
docker node update --availability drain <node-name>
Activate node
docker node update --availability active <node-name>
Manager nodes are responsible for:
You can have multiple managers for high availability, but only one is the leader at any time.
Check manager status
docker node ls
View Raft consensus info
docker swarm inspect
Create service
docker service create --name <service-name> <image>
Create service with replicas
docker service create --name <service-name> --replicas <n> <image>
List services
docker service ls
Inspect service
docker service inspect <service-name> --pretty
Scale service
docker service scale <service-name>=<n>
Update service
docker service update --image <new-image> <service-name>
Remove service
docker service rm <service-name>
Replicas define how many instances of a service should run across the swarm.
Set replicas when creating a service
docker service create --replicas 5 --name myapp myimage
Scale replicas
docker service scale myapp=10
Swarm automatically distributes replicas across available nodes and restarts them if they fail.
List tasks of a service
docker service ps <service-name>
List all tasks
docker node ps <node-name>
List containers
docker container ls
Inspect container
docker container inspect <container-id>
An overlay network is a virtual network that spans across multiple Docker hosts. It allows containers running on different nodes
Create overlay network
docker network create --driver overlay <network-name>
List networks
docker network ls
Attach service to network
docker service create --name <service-name> --network <network-name> <image>
Flag | Description |
---|---|
--replicas | Number of service instances |
--publish | Port mapping (<host>:<container> ) |
--mount | Volume mounting |
--constraint | Node placement rules |
--update-delay | Delay between updates |
--limit-cpu / --limit-memory | Resource limits |
docker service create \
--name web \
--replicas 3 \
--publish 80:80 \
--network webnet \
nginx