swarm deamon 只是一个调度器加路由器,swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器。
部署步骤
manager初始化
1 | docker swarm init --advertise-addr 47.99.236.50 |
加入节点
1 | # 作为worker加入到swarm |
查看节点
1 | docker node ls |
节点升降级
1 | 将节点升级为manager:docker node promote 节点名 |
端口开放
1 | 2377 集群管理端口 |
操作记录
1 | [root@manager ~]# docker swarm init --advertise-addr 47.99.236.50 |
服务管理
创建服务
1 | docker service create --replicas 5 -p 8080:80 --name nginx nginx |
更新服务
1 | docker service update --image nginx:alpine nginx |
删除服务
1 | docker service rm nginx |
服务实例
1 | docker service scale nginx=0 |
查看服务容器状态
1 | docker service ps nginx |
查看服务的详细信息
1 | docker service inspect nginx |
docker swarm 默认就实现了轮询的负载均衡
1 | # 进入swarm节点机器配置 |
网络共享问题
1 | docker network create --driver=overlay myOverly |
docker-compose.yaml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24version: "3.6"
services:
redis-master1:
image: redis:3.2.2
ports:
- "6397:6397"
- "16397:16397"
stdin_open: true
deploy:
mode: replicated
replicas: 2
networks:
- cluster
tty: true
configs:
- source: redis.conf
target: /root/redis.conf
privileged: true
volumes: ["/root/config:/data"]
configs:
redis.conf:
external: true
networks:
cluster:
1 | # 进入swarm节点机器配置 |
滚动更新
1 | docker service update --update-parallelism 2 --image demo:2.0 --update-delay 10s test |
可以测试更新镜像版本的时候客户端并不会断开连接,服务平滑升级,即服务不停机更新,客户端无感知。