Docker Swarm集群(五)

Docker入门学习

  1. Ubuntu16.04进行Docker_17安装图文教程及Docker介绍(一)
  2. Docker入门使用及镜像管理(二)
  3. Dockerfile介绍及常用指令(三)
  4. Docker网络管理(四)
  5. Docker Swarm集群(五)
  6. Docker之Volumes数据卷管理(六)

一、Docker Swarm概述

Docker Swarm是一个用于创建和管理Docker集群的工具。Docker1.12以及后续版本集成了swarmkit工具,该工具主要用于Docker集群管理和容器编排,因此开发者可以不用安装额外的软件包,只需使用简单的命令就可以创建并管理Docker Swarm集群。
Docker Swarm集群的主要特点如下:
1.方便创建和管理集群
DockerSwarm是Dockeri4的集群管理工具,可以直接使用Docker客户端来创建并警应用程序服务,而不需要额外的编配软件来创建理一个DockerSwarm集群,然后在其中部署应,管理集群。
2.可扩展
对于集群中的每个服务,都可以声明要运行的副本任务数量,当向上或向下进行扩展时,集群管理爭执诵过添加或删徐剧本任务来自动适应所需的状态。
3.可实现期望的状态调节
笑群管理器节点不断监视集群状态,并办调实际状态和所期望状态之间的任何差异。例如,如果启动一个服务的10个副本任务,当一个Docker节点承载其中两个副本崩溃时,那么管理器将创建两个新的副本来替换崩溃的副本。
4.集群中多主机网络自动扩展管理
DockerSwarm为集群服务提供了一个覆盖网络,当它初始化或更新应用程序时,集群管理器会自动将在工作节点创建或更新网络来管理服务。
5.提供服务发现功能
集群管理器节点为集群中的每个服务分配一一个唯一的DNS名称,通过DockerSwarm集群提供的负载均衡功能,可以通过嵌入在集群中的DNS服务器来查询集群中运行的每个容器。
6.可实现负载均衡
可以将容器中服务的端口暴露给外部负载均衡器,而在内部,集群允许指定如何在节点之间分配服务容器。
7.安全性强
集群中的每个节点强制使用TLS相互认证和加密,以确保自身和其他节点之间的通信安全。除此之外,集群还支持使用自定义的自签名证书来保证安全。
8.支持延迟更新和服务回滚
在进行服务更新时,可以将服务更新逐步延伸到每个节点上,集群管理器允许服务部署到不同书点组之间时出现延迟,如果某个节点出现问题,还可以将服务回滚到以前的版本。

二、Docker Swarm使用

1、环境搭建
(1)准备3台Ubuntu系统主机(即用于搭建集群的3个Docker机器),每台机器上都需要安装Docker并且可以连接网络,同时要求Docker版本都必须是1.12及以上,因为老版本不支持Docker Swarm。
(2)集群管理节点Docker机器的IP地址必须固定,集群中的所有节点都能够访问该管理节点。
(3)集群节点之间必须使用相应协议并保证其一下端口号可用:

  • 用于集群管理通信的TCP端口2377;
  • TCP和UDP端口7946,用于节点间的通信;
  • UDP端口4789,用于覆盖网络流量。

为了进行演示,分别安装3台使用Ubuntu系统,三台主机名称分别为manager1(作为管理节点),worker1(作为工作节点)和worker2(作为工作节点)、其IP地址分别如下:

manager: 192.168.10.113
worker1: 192.168.10.114
worker2: 192.168.10.116

2、创建步骤
(1)打开虚拟机,找到之前安装的Ubuntu克隆两台Worker节点。
Docker Swarm集群(五)_第1张图片
(2)VMware15虚拟机系统克隆操作步骤Docker Swarm集群(五)_第2张图片
Docker Swarm集群(五)_第3张图片
Docker Swarm集群(五)_第4张图片
(3)按上述步骤克隆两个节点后,然后在打开系统之前修改Mac地址,具体操作如下:
Docker Swarm集群(五)_第5张图片
(4)进行网络连通验证及IP查看,这里开启了DHCP服务,所以IP自动分配,不需要进入配置文件更改。
Docker Swarm集群(五)_第6张图片
3、创建Docker Swarm集群
(1)在名为manager1的Docker机器上创建Docker Swarm集群,具体操作指令如下。

docker swarm init --advertise-addr 192.168.10.11

Docker Swarm集群(五)_第7张图片
执行上述指令后,Docker就会自动在IP为192.168.197.143的机器上创建一个Swarm集群,并将该IP地址的机器设置为集群管理节点。需要说明的是,如过只是测试单节点的集群,直接用docker swarm init指令即可。
在这里插入图片描述
如果出现上图所示信息,就表示Docker Swarm集群创建成功。
(2)在管理节点上使用docker node ls 指令查看集群节点信息,效果如图所示:
在这里插入图片描述
4、向Docker Swarm集群添加工作节点
(1)启动另外两台Docker机器worker1和worker2,分别打开终端窗口,执行向集群中加入工作节点的指令,具体操作指令如下。
worker1:
在这里插入图片描述
worker2:
在这里插入图片描述
上述指令中的–token参数表示向指定集群中加入工作节点的认证信息。读者在进行学习时,一定要使用自己前面创建Docker Swarm集群时返回的向集群中添加工作节点的指令。如果忘记了添加到Docker Swarm集群的指令,可以在集群管理节点上执行“docker swarm join-token worker”指令进行查看。
(2)再次在集群管理节点上使用docker node ls指令查看集群节点信息:
在这里插入图片描述
集群节点列表中显示出了1个管理节点和2个工作节点,这说明Swarm集群搭建成功。
5、向docker Swarm集群部署服务
在Docker Swarm集群中部署服务时,既可以使用Docker Hub上自带的镜像来启动服务,也可以使用自己通过Dockerfile构建的镜像来启动服务。如果使用自己通过Dockerfile构建的镜像来启动服务那么必须先将镜像推送到Docker Hub中心仓库。

docker service create --replicas --name helloworld alpine ping docker.com

manager1:
Docker Swarm集群(五)_第8张图片
6、查看Docker Swarm集群中的服务
(1)当服务器部署完成后,在管理节点可以通过docker service ls 指令查看当前集群中的服务列表信息

docker service ls

(2)可以使用docker service inspect指令,查看部署的服务具体详情,具体操作指令如下:

docker service inspect helloworld

Docker Swarm集群(五)_第9张图片
(3)可以使用docker service ps指令查看指定服务在集群节点上的分配和运行情况,具体操作指令如下:

docker service ps helloworld

在这里插入图片描述
7、更改docker Swarm集群服务副本数量
在集群中部署的服务,如果只运行一个副本,就无法体现出集群的优势,并且一旦该机器或副本崩溃,该服务将无法访问,通常一个服务会启动多个服务副本。
    在管理节点manager1上,更改服务副本数量的指令如下:

docker service scale helloworld=5

Docker Swarm集群(五)_第10张图片
更改完成后就可以使用docker service ps 指令查看这5个服务副本在3个节点上的具体分布和运行情况。
8、删除服务
Docker Swarm集群(五)_第11张图片
9、访问服务
(1)在集群管理节点manager1上,执行docker network ls 指令查看网络列表:
Docker Swarm集群(五)_第12张图片
(2)在集群管理节点manager1上,创建以overlay为驱动的自定义网络,具体操作指令如下:
Docker Swarm集群(五)_第13张图片
(3)在集群管理节点manager1上,再次部署服务,具体操作指令如下:
Docker Swarm集群(五)_第14张图片
(4)在集群管理节点manager1上,使用docker service ps my-web指令查看服务的两个服务副本运行情况:
在这里插入图片描述
(5)外界访问服务
Docker Swarm集群(五)_第15张图片
Docker Swarm集群(五)_第16张图片
Docker Swarm集群(五)_第17张图片

你可能感兴趣的:(云应用系统)