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