Docker三剑客之Swarm

1、Docker Swarm简介

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。

在这里插入图片描述

这个图作为一个整体实际上都处于一个所谓的集群中,它可能对应了一到多台的实际服务器。每台服务器上都装有Docker并且开启了基于HTTP的DockerAPI。这个集群中有一个SwarmManager的管理者,用来管理集群中的容器资源。管理者的管理对象不是服务器层面而是集群层面的,也就是说通过Manager,我们只能笼统地向集群发出指令而不能具体到某台具体的服务器上要干什么(这也是Swarm的根本所在)。至于具体的管理实现方式,Manager向外暴露了一个HTTP接口,外部用户通过这个HTTP接口来实现对集群的管理。对于稍微大一点的集群,最好是拿出一台实际的服务器作为专门的管理者,作为学习而言,也可以把管理者和被管理者放在一台服务器上。

在这里插入图片描述

2、Docker Swarm相关概念

节点

运行 Docker 的主机可以主动初始化一个Swarm集群或者加入一个已存在的Swarm集群,这样这个运行 Docker 的主机就成为一个 Swarm集群的节点(node)。

节点分为管理(manager)节点和工作(worker)节点。

管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行(节点退出集群命令docker swarm leave可以在工作节点执行)。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader,leader通过raft协议实现。

工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。

来自 Docker 官网的这张图片形象的展示了集群中管理节点与工作节点的关系。

在这里插入图片描述

服务和任务

任务(Task)是Swarm中的最小的调度单位,目前来说就是一个单一的容器。

服务(Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

global services 每个工作节点上运行一个任务

两种模式通过docker service create的–mode参数指定。

来自 Docker 官网的这张图片形象的展示了容器、任务、服务的关系。

在这里插入图片描述

3、Docker Swarm 实践

3.1 Docker Swarm 的安装

docker swarm init #初始化,然后可以看到提示
docker swarm join --token \
SWMTKN-1-32axwyv0mqh43epu7igmmk2n00kxxnztm17f8vouy56sdh3gsc-74epd17ja8kbf4rrd2jjawmq3 \
1.2.3.1:2377

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2 Docker Swarm 小试

对为三台同样操作,因为还没有搭建私有仓库,必须先把镜像准备好。
在这里插入图片描述

docker service create --name my_cluster --replicas 2 -p 80:80  myapp:v1

在这里插入图片描述
在这里插入图片描述

3.3 为swarm搭建webUI监控节点系统,一目了然

docker pull dockersamples/visualizer  #拉取监控镜像

docker service create   --name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer

浏览器访问,实时监控,非常直观:
在这里插入图片描述

3.4 弹性增减容器,简直不要太方便

docker service scale my_cluster=20

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、给Swarm增加私有仓库

4.1 增加server4新节点,并安装docker-ce

这里不懂可以看Linux下KVM虚拟化自动部署

照快照
在这里插入图片描述

配置静态IP
在这里插入图片描述
安装docker-ce,这里利用前面学习的docker-machineDocker三剑客之Machine

1)配置免密
在这里插入图片描述
2)一条命令搞定
在这里插入图片描述
在这里插入图片描述

4.2 将swarm master由server1迁移到server2上

将server2提升为备用
在这里插入图片描述

将server1降级
在这里插入图片描述
server2备胎上位
在这里插入图片描述
将server4加入Swarm

docker swarm join --token SWMTKN-1-194h0jzb90smccawgpl45hgibqvt6vhs66m5rrcamovb9if8wb-avfie95xt1ym0jsqcz262325c 1.2.3.2:2377

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

systemctl reload docker.service #server2\3\4 全部重新加载下docker服务

4.3 将之前server1上配置的harbor仓库启用

将server1退出swarm并在master端删除server1节点
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

配置仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

把需要的镜像上传进去:

在这里插入图片描述

4.4 测试

配置加速器:
在这里插入图片描述

systemctl reload docker.service #server2\3\4 全部重新加载下docker服务

传送证书
在这里插入图片描述

关闭my_cluster,并清理所有节点的镜像,保证实验的镜像是在私有仓库拉取的
在这里插入图片描述
在这里插入图片描述

像之前那样执行命令
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、滚动更新

docker service update \
--image myapp:v2 \   #指定要更新的镜像
--update-parallelism 2 \  #指定最大同步任务数
--update-delay 5s my_web \ # 指定更新间隔

上传myapp:v2到私有仓库

在这里插入图片描述
在这里插入图片描述

docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s my_web 

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值