Docker:docker-swarm常见命令

官网文档

https://docs.docker.com/engine/swarm/

初始化第一个管理节点

关于advertise-addr和listen-addr这两个参数:

  • 前者用来指定其他节点连接m0时的地址
  • 后者指定承载swarm流量的IP和端口
  • 会在本地新建docker网络
docker swarm init --advertise-addr 192.168.198.105:2377 --listen-addr 192.168.198.105:2377

docker node ls

docker network ls

在这里插入图片描述

在这里插入图片描述

MANAGER STATUS列说明:
  • Leader 意味着该节点是使得群的所有群管理和编排决策的主要管理器节点。
  • Reachable 意味着节点是管理者节点正在参与Raft共识。如果领导节点不可用,则该节点有资格被选为新领导者。
  • Unavailable 意味着节点是不能与其他管理器通信的管理器。如果管理器节点不可用,您应该将新的管理器节点加入群集,或者将工作器节点升级为管理器。
AVAILABILITY列说明:
  • Active 意味着调度程序可以将任务分配给节点。
  • Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
  • Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。

如何加入新的节点

Docker Swarm的新节点加入策略是从管理节点获取一长串命令,被称为join token,任何想加入集群的机器只要自己执行这个join token即可加入Swarm集群;
如果有新的管理节点需要加入,在m0执行命令docker swarm join-token manager即可得到管理manager节点的join token,
如果有新的work节点需要加入,在m0执行命令docker swarm join-token worker即可得到管理work节点的join token

加入worker节点
# 在manager节点执行。可以作为worker节点加入集群
docker swarm join-token worker

在这里插入图片描述
在新worker节点执行
在这里插入图片描述
在manager节点查看

# 该命令只能在管理节点执行
docker node ls

在这里插入图片描述

加入manager节点
# 在manager节点执行。可以作为manager节点加入集群
docker swarm join-token manager

在这里插入图片描述
在新manager节点执行
在这里插入图片描述
在manager节点查看

# 该命令只能在manager节点执行
docker node ls

在这里插入图片描述

验证节点

# master节点:
docker info

# work节点:
docker info

下面图片是worker部分
在这里插入图片描述

节点权限提升/降低

# 将manager节点降低为worker节点,在manager节点执行如下命令:
docker node demote work-02
# 该命令只能在manager节点执行
docker node ls

查看
在这里插入图片描述

# 将worker节点提升为manager节点,在manager节点执行如下命令:
docker node promote work-01
# 该命令只能在manager节点执行
docker node ls

在这里插入图片描述

脱离集群

# 在work-02节点使用命令:
# 此命令必须在要拖里的节点上使用,
# 如果集群只有一个manager,manager节点只能强制退出。命令:docker swarm leave --force。manager退出后意味着整个swarm不复存在。
docker swarm leave

稍微等待几分钟,在manager节点使用命令:docker node ls,发现work-02节点已经脱离集群管理。

在这里插入图片描述

删除脱离集群的节点

先使用命令:docker node demote 节点名称。将某一个节点降为worker节点后,再删除。
使用命令:docker node rm 节点名称|节点ID

# 在manager节点上执行
docker node rm work-02

在这里插入图片描述

# 该命令只能在manager节点执行
docker node ls

在这里插入图片描述

swarm命令

在这里插入图片描述

node命令

在这里插入图片描述

service命令

在这里插入图片描述

service和replicas关系

在这里插入图片描述
说明:部署了三个nginx服务;

基础镜像

集群所有节点都需要下载相关镜像

docker pull nginx:1.18.0-alpine
docker pull nginx:1.19.3-alpine
scp nginx.1.18.tar root@192.168.198.106:/data/
scp nginx.1.18.tar root@192.168.198.107:/data/
scp nginx.1.19.3.alpine.tar root@192.168.198.106:/data/
scp nginx.1.19.3.alpine.tar root@192.168.198.107:/data/

# 所有节点执行如下命令:
cd /data

docker load -i nginx.1.18.tar
docker load -i nginx.1.19.3.alpine.tar
rm -rf *
部署nginx服务(5个)
# 在manager节点中创建overlay网络:
docker network create -d overlay nginx-net

# 创建5个nginx:alpines容器的集群:
docker service create --name nginx --network nginx-net -p 80:80 --replicas 5nginx:1.18.0-alpine

# 在manager节点使用docker service ls 命令查看服务情况,worker节点无法查看:
docker service ls

# 在manager或者worker节点都可以执行docker ps命令查看本虚拟机容器情况:
docker ps

# 设置manager节点只用于管理集群,不希望部署服务。master-01为manager节点名称
docker node update --availability drain master-01

# 使用docker service scale nginx=2命令将服务缩减为2个容器:
docker service scale nginx=2

在这里插入图片描述

在这里插入图片描述
在manager节点
在这里插入图片描述
在worker节点
在这里插入图片描述

在这里插入图片描述

升级nginx版本
# 进入其中一个容器查看nginx的版本信息:
# 注意事项:因nginx是alpine的linux版本。不能使用/bin/bash指令。
docker exec -it 503fe639bb89 sh
nginx -v

1.更新镜像:
docker service update --image nginx:1.19.3-alpine nginx
2.添加或者更新一个对外端口:
docker service update --publish-add 8090:80 nginx
删除服务
docker service rm nginx
docker network rm nginx-net

stack命令

在这里插入图片描述

部署nginx服务

docker-compose.yml

version: "3"
services:
  nginx-web:
	image: nginx:1.19.3-alpine
	container_name: nginx
	networks:
	  - nginx-net
	restart: always
	ports:
	  - 80:80
	deploy:
	  replicas: 5
networks:
  nginx-net:
	driver: overlay

运行nginx服务

# 在manager节点中创建docker-compose.yml文件。执行如下命令:
docker stack deploy nginx-stack --compose-file=docker-compose.yml 或者是
docker stack deploy nginx-stack -c docker-compose.yml

# 查看stack服务运行情况。执行如下命令:
docker stack services nginx-stack

# 查看5个容器运行在哪个节点中。执行如下命令:
docker service ls 查看到NAME中的服务名为:nginx-stack_nginx-web
docker service ps nginx-stack_nginx-web

# 进行测试:
curl 192.168.0.105
curl 192.168.0.106
curl 192.168.0.107

# 删除stack服务。执行如下命令:
docker stack rm nginx-stack
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员无羡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值