引言
Docker Swarm是Docker原生的集群管理工具。本文介绍Swarm的使用和实战。
一、集群初始化
1 2 3 4 5 6 7 8 9 10 11
| docker swarm init --advertise-addr 192.168.1.10
docker swarm join --token SWMTKN-1-xxx 192.168.1.10:2377
docker swarm join-token manager
docker node ls
|
二、服务部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| docker service create \ --name web \ --replicas 3 \ --publish 80:80 \ nginx:latest
docker service ls docker service ps web
docker service scale web=5
docker service update --image nginx:1.21 web
docker service rm web
|
三、Stack部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| version: '3.8'
services: web: image: nginx:latest ports: - "80:80" deploy: replicas: 3 restart_policy: condition: on-failure placement: constraints: - node.role == worker update_config: parallelism: 1 delay: 10s networks: - webnet
redis: image: redis:latest deploy: replicas: 1 placement: constraints: - node.role == manager networks: - webnet
networks: webnet: driver: overlay
|
1 2 3 4 5 6 7 8 9
| docker stack deploy -c docker-compose.yml myapp
docker stack ls docker stack services myapp
docker stack rm myapp
|
四、滚动更新
1 2 3 4 5 6 7 8 9
| docker service update \ --update-parallelism 2 \ --update-delay 10s \ --image nginx:1.21 \ web
docker service rollback web
|
总结
Docker Swarm核心:
- 集群管理:Manager和Worker节点
- 服务编排:Service和Task
- 负载均衡:内置负载均衡
- 滚动更新:零停机部署
参考资料