Lab Docker SWARM (docker service)

docker swarm

Cài đặt docker swarm visualizer

docker run -it -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer

Truy cập docker swarm visualizer theo địa chỉ http://master-node-ip:8080

1. Manager node

Tạo manager node

docker swarm init
---------------------
Swarm initialized: current node (ckeawi94gefztsgmlhzehlv6z) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1jepva9466vm9jv4io0m3n1cmtjs621qtfh1ithmpo66a03nux-ec83kj23obl947eqaafz7icrn 10.0.1.76:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Thêm manager node

docker swarm join-token manager
----------------------------
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1jepva9466vm9jv4io0m3n1cmtjs621qtfh1ithmpo66a03nux-c68slgwpsmdfkj4u4lhemfqws 10.0.1.76:2377

Chuyển worker node thành manager node

docker node promote worker1

Chuyển manager node thành worker node

docker node demote worker1

2. Tạo Worker node

docker swarm join --token [token] 10.0.1.76:2377

3. Triển khai dịch vụ trên SWARM

Service replicas

docker service create -d --name nginx_service -p 8081:80 --replicas 2 nginx:latest

docker service ls
docker service ps nginx_service

Service global

docker service create -d --name nginx_service_global -p 80:80 --mode global nginx:latest

docker service ls
docker service ps  nginx_service_global

Scale

docker service scale nginx_service=3
docker service scale nginx_service_global=3

Update service

# Change port
docker service update --publish-add published=8082,target=80 nginx_service_global

# Check
docker service inspect --format '{{json .Endpoint.Ports}}' nginx_service_global

# update limit resource
docker service update --limit-cpu="0.5" --limit-memory=150MB nginx_service

# Check
docker service inspect --format '{{json .Spec.TaskTemplate.Resources}}' nginx_service

# update image
docker service update --image nginx:1.23.3 nginx_service --update-delay 10s
docker service update --image nginx:latest nginx_service --update-delay 10s

docker service update --image nginx:1.23.3 nginx_service_global --update-delay 10s

Kiểm tra khả năng tự khôi phục

docker stop $(docker ps -a -q)

Kiểm tra khả năng rollback

docker service update --image nginx:1.23.3 nginx_service --update-delay 10s

docker service update --image nginx:latest nginx_service --update-delay 10s

docker service update --rollback nginx_service

Một số lệnh khác

docker node ls
docker swarm leave -f
docker node rm <node-name>
docker node update --availability drain node1
docker node update --availability active node1
# Xóa tất cả các container & images

docker rm -f $(docker ps -a -q)
docker rmi -f $(docker images -a -q)

# Kiểm tra
docker ps -a
docker images -a

Next Post