Post

Docker Swarm

Docker Swarm

Docker Swarm Initialization

1.Install Docker and initial

Skip

2. Initialize Docker Swarm Cluster

Select everyone to set up cluster.

1
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

  • If you want mutiple managers, use docker swarm join-token manager to get manager token. docker swarm join-token worker to get worker token.
  • We can also use docker node promote <NODE_NAME> to promote a node to manager.

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

1
docker service create --name test-nginx --publish 80:80 --replicas 3 nginx

2. Check service status

1
2
docker service ls
docker service ps test-nginx # check nginx service

3. Scale service

1
docker service scale test-nginx=5

4. Remove service

1
docker service rm test-nginx

Docker Swarm Compose

1. Docker Compose file

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: '3.8'

services:
  web:
    image: nginx:latest
    hostname: "-"
    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

1
docker stack deploy -c docker-compose.yaml test_nginx

3. Change replicas number

Modify replicas number in docker-compose.yaml, and run Compose again.

1
docker stack deploy -c docker-compose.yaml test_nginx

4. Remove Compose

1
docker stack rm test_nginx
This post is licensed under CC BY 4.0 by the author.