0
点赞
收藏
分享

微信扫一扫

Docker三剑客docker-machine ,docker-compose,docker-swam

龙毓七七 2022-03-12 阅读 71

目录

Docker三剑客之一:docker-machine 

​Docker三剑客之一:docker-compose

Docker三剑客之一:docker-swarm

创建swarm集群 

创建集群服务

部署swarm监控

使用yml文件的形式创建集群


Docker三剑客之一:docker-machine 

Docker Machine安装:

创建machine: machine指的是docker daemon主机,其实就是在host上安装和部署docker。

上传docker-machine-Linux-x86_64-0.16.2到docker1 中

docker2已经安装 docker

 创建machine要求免密登陆远程主机: # ssh-keygen # ssh-copy-id  目标ip

真机httpd发布目录下建立以下文件 :

   get-docker.sh ##更改repo地址

docker-ce.repo #安装包的来源 

配置完成后即可执行安装命令: 

--driver generic 指定驱动为普通驱动
--engine-install-url指定安装脚本地址,
--generic-ip-address 需要安装docker的客户端ip以及主机名

ps ax查看进程

docker-machine ls #查看节点 可以看到连的是docker3的2376端口

  • cd /etc/yum.repos.d/

  • ls  #会自己出现docker-ce.repo源

需要修改内核参数 ,不然会影响网络

 开启一个2376端口用于远程连接

使之生效

可以看到警告消失

对docker2做免密认证

docker-machine create --driver generic --generic-ip-address=172.25.254.2 docker2 #由于docker2上已经安装docker,所以很快只需添加节点

  查看2376端口

添加成功,查看节点: 

 根据提示执行:eval $(docker-machine env docker2),可以直接切入目标主机。

当前在docker2 

 切换到docker3上

env 可以看到host确定当前所在的主机

退出 重新连接到docker1

docker主机上生成的配置文件,从配置文件中可以看出,docker daemon启用了TLS验证功能,docker-machine已经为其生成好了所需的证书文件

安装一个bash脚本确定操作的是哪个主机 

source出现报错

需要退出重新连接docker1 ,使bash生效

 显示访问docker2所需的环境变量

也可以切换到docker3

  • docker-machine config docker2  

  • #查看打印docker2的配置信息 

Docker三剑客之一:docker-compose

Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/compose

我们知道使用Dockerfile模板文件可以让用户很方便的定义一个单独的应用容器,其实在工作中,经常会碰到需要多个容器相互配合来完成的某项任务情况,例如工作中的web服务容器本身,往往会在后端加上数据库容器,甚至会有负责均衡器,比如LNMP服务

Compose 就是来做这个事情的,它允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)

建立docker-compose.yml文件 

version: "3.7"				# 指定 compose 文件的版本
services:					 # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称

设置发布目录

  docker-compose up 启动集群

vim /etc/hosts

按ctrl+c终止之后重新启动

 测试负载均衡

down掉web1

重新测试

Docker三剑客之一:docker-swarm

Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/swarm, 它是将一群Docker宿主机变成一个单一的虚拟主机,Swarm使用标准的Docker API接口作为其前端的访问入口,换言之,各种形式的Docker Client(compose,docker-py等)均可以直接与Swarm通信,甚至Docker本身都可以很容易的与Swarm集成,这大大方便了用户将原本基于单节点的系统移植到Swarm上,同时Swarm内置了对Docker网络插件的支持,用户也很容易的部署跨主机的容器集群服务。

Swarm是典型的master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager的统一管理,集群会自动通过Raft协议分布式选举出manager节点,无需额外的发现服务支持,避免了单点的瓶颈问题,同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持

创建swarm集群 

docker swarm init   #初始化后会出现一个token

docker3,4上:加入

docker node ls #查看节点部署

添加解析

因为之前的实验设置了内容信任,从本地拉取镜像需要验证,所以清理之前的镜像仓库

集群节点可以从本地仓库拉取镜像

创建集群服务

现在1是仓库,2、3、4是工作节点,其中2是leader 

可以在docker3,4上看到服务

测试负载均衡

此时三个节点均可以访问到

docker3,4上也可以访问到

 测试负载均衡

 

节点ip后加hostname.html可以查看容器id,以上结果说明是三个容器在负载均衡提供服务 

 缩减为3个

部署swarm监控

在docker1上传监控镜像到仓库:

 访问8080端口查看监控

docker service create --name webservice -p 80:80 --replicas 3 myapp:v1 ##创建服务

在监控页面可以看到

容器伸缩

docker service scale webservice=6

可以 看到在每个节点上均衡分布

 

docker service scale webservice=20

 

同样也可以缩减为10个

docker service update --image myapp:v2 --update-parallelism 2 --update-delay 2s webservice##滚动更新

可以看到更新成功

更新完成后访问查看版本 

docker service rollback webservice ##更新回滚

若其中一个节点down掉

docker3上不再做均衡

可以看到运行的10个容器

重启 docker3

又重新实现负载均衡  

使用yml文件的形式创建集群

删除原来的集群服务

vim docker-compose.yml #编辑部署文件

 

 可以看到三个节点都有一个副本

在yml文件中修改副本数为6

在yml文件中更改版本数为v2

docker3已经成功升级为master

docker swarm leave #worker节点脱离集群

可以看到已经down掉

 

 

举报

相关推荐

0 条评论