Docker Swarm集群管理的使用及原理解析

 更新时间:2020年12月02日 15:50:26   作者:愚公搬代码  
这篇文章主要介绍了Docker Swarm集群管理的使用及原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Swarm 集群管理

简介

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

支持的工具包括但不限于以下各项:

  • Dokku
  • Docker Compose
  • Docker Machine

原理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

  • swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

在这里插入图片描述 

使用

以下示例,均以 Docker Machine 和 virtualbox 进行介绍,确保你的主机已安装 virtualbox。

1、创建 swarm 集群管理节点(manager)

创建 docker 机器:

$ docker-machine create -d virtualbox swarm-manager

在这里插入图片描述

初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。

$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.107 #这里的 IP 为创建机器时分配的 ip。

在这里插入图片描述

以上输出,证明已经初始化成功。需要把以下这行复制出来,在增加工作节点时会用到:

docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

2、创建 swarm 集群工作节点(worker)

这里直接创建好俩台机器,swarm-worker1 和 swarm-worker2 。

在这里插入图片描述

分别进入两个机器里,指定添加至上一步中创建的集群,这里会用到上一步复制的内容。

在这里插入图片描述

以上数据输出说明已经添加成功。

上图中,由于上一步复制的内容比较长,会被自动截断,实际上在图运行的命令如下:

docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

3、查看集群信息

进入管理节点,执行:docker info 可以查看当前集群的信息。

$ docker info

在这里插入图片描述

4、部署服务到集群中

注意:跟集群管理有关的任何操作,都是在管理节点上操作的。

以下例子,在一个工作节点上创建一个名为 helloworld 的服务,这里是随机指派给一个工作节点:

docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com

在这里插入图片描述

5、查看服务部署情况

查看 helloworld 服务运行在哪个节点上,可以看到目前是在 swarm-worker1 节点:

docker@swarm-manager:~$ docker service ps helloworld

在这里插入图片描述

查看 helloworld 部署的具体信息:

docker@swarm-manager:~$ docker service inspect --pretty helloworld

在这里插入图片描述

6、扩展集群服务

我们将上述的 helloworld 服务扩展到俩个节点。

docker@swarm-manager:~$ docker service scale helloworld=2

在这里插入图片描述

可以看到已经从一个节点,扩展到两个节点。

在这里插入图片描述

7、删除服务

docker@swarm-manager:~$ docker service rm helloworld

在这里插入图片描述

查看是否已删除:

在这里插入图片描述

8、滚动升级服务

以下实例,我们将介绍 redis 版本如何滚动升级至更高版本。

创建一个 3.0.6 版本的 redis。

docker@swarm-manager:~$ docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6

在这里插入图片描述

滚动升级 redis 。

docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis

在这里插入图片描述

看图可以知道 redis 的版本已经从 3.0.6 升级到了 3.0.7,说明服务已经升级成功。

9、停止某个节点接收新的任务

查看所有的节点:

docker@swarm-manager:~$ docker node ls

在这里插入图片描述

可以看到目前所有的节点都是 Active, 可以接收新的任务分配。

停止节点 swarm-worker1:

在这里插入图片描述

注意:swarm-worker1 状态变为 Drain。不会影响到集群的服务,只是 swarm-worker1 节点不再接收新的任务,集群的负载能力有所下降。

可以通过以下命令重新激活节点:

docker@swarm-manager:~$ docker node update --availability active swarm-worker1

在这里插入图片描述

到此这篇关于Docker Swarm集群管理的使用及原理解析的文章就介绍到这了,更多相关Docker Swarm集群管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker容器跨服务器的迁移的方法

    docker容器跨服务器的迁移的方法

    本篇文章主要介绍了docker容器跨服务器的迁移的方法,docker的备份方式有export和save两种,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • 详解如何修改docker pull镜像源

    详解如何修改docker pull镜像源

    Docker Hub Mirror 为全球最大的Docker Registry(Docker Hub)提供在中国的镜像代理服务。Docker Hub Mirror会为中国的用户在国内的服务器上缓存诸多镜像。
    2017-03-03
  • Windows Docker端口占用错误及解决方案总结

    Windows Docker端口占用错误及解决方案总结

    在 Windows 环境下使用 Docker 容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配,合理调整动态端口范围,以及重启网络服务等实用技巧,有效解决 Windows Docker 端口占用错误,需要的朋友可以参考下
    2025-04-04
  • docker从容器中访问到宿主机3种方法

    docker从容器中访问到宿主机3种方法

    这篇文章主要给大家介绍了关于docker从容器中访问到宿主机的3种方法,某些时候,我们会有在容器内容访问宿主机某个服务的需求,需要的朋友可以参考下
    2023-10-10
  • docker 使用mysqldump命令备份导出项目中的mysql数据

    docker 使用mysqldump命令备份导出项目中的mysql数据

    这篇文章主要介绍了docker 使用mysqldump命令备份导出项目中的mysql数据本文通过命令给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Docker单机部署Doris超详细图文教程

    Docker单机部署Doris超详细图文教程

    Apache Doris是一款基于MPP架构的分析型数据库,由百度大数据部研发,支持亚秒级响应时间的实时数据分析,本文旨在为学习Doris的同学提供一个快速的操作指引,以便更高效地挖掘数据背后的价值,对docker 部署Doris 数据库使用感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Docker 搭建私有仓库(registry、harbor)

    Docker 搭建私有仓库(registry、harbor)

    这篇文章主要介绍了Docker 搭建私有仓库(registry、harbor),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Docker 数据卷操作的实现

    Docker 数据卷操作的实现

    这篇文章主要介绍了Docker 数据卷操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Docker中的文件/文件夹的挂载映射方式

    Docker中的文件/文件夹的挂载映射方式

    通过命令行在宿主机与Docker容器间挂载和映射文件夹,实现数据共享,具体步骤包括:在宿主机创建文件夹并使用Docker命令将其挂载到容器指定位置,需注意容器名称与ID的使用差异
    2024-11-11
  • Docker容器修改端口映射的实现

    Docker容器修改端口映射的实现

    本文主要介绍了Docker容器修改端口映射的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论