Docker Swarm
Jiangbo Li
Network Engineer @ Hilton | Technical Leadership, Terraform, CI/CD, Docker, SRE
Docker Swarm Initialization
1.Install Docker and initial
Skip
2. Initialize Docker Swarm Cluster
Select everyone to set up cluster.
docker swarm init --advertise-addr <cluster_ip>
You can get a swarm token like this?ddocker swarm join --token SWMTKN-1-2142i8zn <cluster_ip>:2377
3. Add Nodes
Use?docker swarm join --token SWMTKN-1-2142i8zn <cluster_ip>:2377?to add nodes.
4. Remove Nodes
Use?docker swarm leave?to remove nodes.
5. View Nodes and Services
Use?docker node ls?to view nodes. Use?docker service ls?to view services.
Docker Swarm Configuration Examples
1. Create a nginx service
docker service create --name test-nginx --publish 80:80 --replicas 3 nginx
2. Check service status
docker service ls
docker service ps test-nginx # check nginx service
3. Scale service
docker service scale test-nginx=5
4. Remove service
docker service rm test-nginx
Docker Swarm Compose
1. Docker Compose file
version: '3.8'
services:
web:
image: nginx:latest
hostname: "{{.Service.Name}}-{{.Task.Slot}}"
ports:
- "80:80"
deploy:
replicas: 3
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == worker
networks:
- webnet
networks:
webnet:
placement.constraints means the node must be a worker node. It is optional.
2. Run Compose
docker stack deploy -c docker-compose.yaml test_nginx
3. Change replicas number
Modify replicas number in docker-compose.yaml, and run Compose again.
docker stack deploy -c docker-compose.yaml test_nginx
4. Remove Compose
docker stack rm test_nginx