1. docker swarm 管理调度服务
# 创建manager服务
# 这里的ip是自己服务器的外网ip,执行会提示jion信息
docker swarm init --advertise-addr xx.xx.xx.xx
# 也可以自己重新查询
docker swarm join-token worker
# 生成添加为管理员 命令
docker swarm join-token manager
# 查看状态
docker info
# Swarm: active...
# 查看当前所有与激活节点
docker node ls
# 自己退出集群
docker swarm leave
# 强制退出
docker swarm leave --force
# 更新集群
docker swarm update
# 查询token对应主机
docker run swarm list token://SWMTKN-1-2jnx62
2.docker service启动服务
# 创建一个ngx_net 并且同时部署在两台服务器上
docker service create --replicas 2 --network ngx_net --name my-service -p 8089:80 nginx
# 查看当前服务
docker service inspect --pretty my-test
# 查看所有service服务
docker service ls
# 查看服务配置
docker service inspect --pretty helloworld
# 查看服务运行情况
docker service ps my-test
# 动态扩容
# 如果原来是2 设置3 则增加1
docker service update --replicas 3 my-test
# 等价于
docker service scale my-test=3
# 如果原来是2 设置1 则减少1
docker service update --replicas 1 my-test
# 移除服务 需要比较长时间 所有服务器节点才能正常关闭
docker service rm my-test
# 创建时候可以设置 对应的更新延迟时间 --update-delay
docker service create --replicas 2 --name my-test2 --update-delay 10s nginx:alpine
# 重新启动暂停服务 或者 滚动更新 容器的版本,
docker service update --image nginx:1.23 my-test
# 动态添加映射的端口
docker service update --publish-add 8491:80 my-test
# 获取服务的日志
docker service logs
# 恢复服务至update之前的配置
docker service rollback
3.docker node节点管理
# 显示所有节点
docker node ls
# 节点可用性 AVAILABILITY
Active:可以分配任务
Pause:当前不能分配任务,但是原有运行的任务不变
Drain:不能分配任务
# 改变节点状态
docker node update --availability drain 节点Id/名称
# 管理节点类型
Leader:为主管理员
Reachable:如果Leader挂了,Reachable可以升级为管理员
Unavailable:不参与管理动作,除非都没有Leader和Reachable 才有机会升级
# 修改管理节点类型 升级为 Reachable
docker node promote 节点名称|节点ID
# 修改管理节点类型 降级为 空(Unavailable)
docker node demote 节点名称|节点ID
#显示一个或多个节点的详细信息
docker node inspect
#列出 swarm 群集中的节点
docker node ps
#从 swarm 群集删除一个或多个节点
docker node rm
4.docker stock 调度编排
my-stack.yml
version: '3'
services:
my-test2:
image: nginx:alpine
restart: always
ports:
- 8029:80
deploy:
replicas: 2
常用命令
# 启动service
docker stack deploy my-stack -c=my-stack.yml
# 查看所有 stock service服务
docker stack ls
# 列出stack中的所有任务
docker stack ps
# 列出stack中的服务
docker stack services my-stack
# 删除 stock 任务
docker stack rm my-stack
5. 其他
docker swarm UI
# /var/run/docker.sock 是必须要的挂载目录 HOST是指定Ip,需要是manager节点的Ip
docker run -itd --name visualizer -p 8097:8080 -e HOST=171.35.40.74 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer:latest
修改主机名
# 修改主机名
hostnamectl set-hostname docker-swarm-mywork-01
# 查看是否生效,如果已经加入集群,需要移除在重新jion 才会生效
hostname