二、Docker Swarm集群

学习目标:

  • Docker的网络管理
  • Docker Swarm集群的使用
  • Volumes数据卷的使用

1 Docker Swarm 概述

Docker Swarm集群的主要特点如下。

  1. 方便创建和管理集群
  2. 可扩展
  3. 可实现期望的状态调节
  4. 集群中多主机网络自动拓展管理
  5. 提供服务发现能力
  6. 可实现负载均衡
  7. 安全性强
  8. 支持延迟更新和服务回滚

2 Docker Swarm 使用

2.1 环境搭建

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

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

为了进行下面示例的演示,此处按照要求在虚拟机中分别安装了 3 台使用 Ubuntu16.04 系统的机器,这三台机器的主机名称分别为 manager1 (作为管理节点)、worker1 (作为工作节点)和 worker2 (作为工作节点),其 IP 地址分别如下。

manager1:	192.168.197.143
worker1:	192.168.10.144
worker2:	192.168.10.145

2.2 创建 Docker Swarm 集群

(1)在名为manager1的Docker机器上创建Docker Swarm集群,具体操作指令如下。

	$ docker swarm init --advertise-addr 192.168.197.143

在这里插入图片描述然后在此节点查看集群节点信息。
在这里插入图片描述

(2)在管理节点上,使用 docker node ls 指令查看集群节点信息。
在这里插入图片描述

2.3 向 Docker Swarm 集群添加工作节点

(1)启动另外两台 Docker 机器 worker1 和 worker2,分别打开终端窗口,向集群中加入工作节点的指令,具体操作指令如下。

	$ docker swarm join --token SWMTKN-1-5brzty1cm6w9hmpej4viggq7ekclpdlq08r sfupzdi20u5wldg-2n0mw1wvli3qdjvzauxrida26 192.168.197.143:2377

Note:需要特别注意的是,上述指令的 --token 表示向指定集群中加入工作节点的认证信 息,一定要使用自己在前面创建 Docker Swarm 集群时返回的向集群中添加工作节点的指令。这一点在管理节点上执行 docker node join-token worker 指令进行查看。
在这里插入图片描述

(2)再次在集群管理节点上使用 docker node ls 指令查看集群节点信息。
在这里插入图片描述

2.4 向 Docker Swarm 集群部署服务

在向 Docker Swarm 集群中部署服务时,既可以使用 Docker Hub 上自带的镜像来启动服务,也可以使用自己通过 Dockerfile 构建的镜像来启动服务。若使用自己通过 Dockerfile 构建的镜像来启动服务,那么必须先将镜像推送到 Docker Hub 中心仓库。
这里使用 Docker Hub 上自带的 alpine 镜像为例来部署集群服务,具体操作指令如下。

	$ docker service create --replicas 1 --name helloworld alpine ping docer.com

在这里插入图片描述

2.5 查看 Docker Swarm 集群中的服务

(1)当服务部署完成后,在管理节点查看当前集群中的服务列表信息。

	$ docker service ls

在这里插入图片描述
(2)查看部署的服务的具体详情。

	$ docker service inspect helloworld

(3)查看指定服务在集群上节点的分配和运行情况。

	$ docker service ps helloworld

2.6 更改 Docker Swarm 集群服务副本数量

	$ docker service scale helloworld=5

在这里插入图片描述

2.7 删除服务

对于不需要的服务,可以进行删除,操作指令如下。

	$ docker service rm helloworld

在集群管理节点 manager1 上执行上述删除服务后,该服务就会在集群中彻底删除。
在这里插入图片描述

2.8 访问服务

前面部署的服务都没有直接向外界暴露服务端口,外界也无法正常访问服务。接下来我们就通过自定义 overlay 驱动网络为例来讲解集群下的网络管理与服务访问。
(1)在集群管理节点 manager1 上,查看网络列表。

	$ docker network ls

在这里插入图片描述
(2)在集群管理节点 manager1 上,创建以 overlay 为驱动的自定义网络。

	$ docker network create --driver overlay my-multi-host-network

在这里插入图片描述
(3)在集群管理节点 manager1 上,

	$ docker service create --network my-multi-host-network --name my-web --publish 8080:80 --replicas 2 nginx

在这里插入图片描述
(4)在集群管理节点 manager1 上,查看服务的两个服务副本运行情况。

	$ docker service ps my-web

在这里插入图片描述

(5)外界访问服务
打开浏览器,使用任意一台节点机器的 “IP + 8080” 端口进行服务访问,都可以正常显示。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值