• Docker Swarm


    1 Docker Swarm介绍

    • 在Wiki的解释中,Swarm behavior是指动物的群集行为。比如我们常见的蜂群、鱼群,秋天往南飞的燕群都可以称作为Swarm behavior。Swarm项目正是如此,通过把多个Docker Engine聚集在一起,形成一个大的Docker Engine,对外提供容器的集群服务。同时这个集群对外提供Swarm API,用户可以像使用Docker Engine一样使用Docker集群。
    • Swarm是Docker公司在2014年12月初发布的容器管理工具,和Swarm一起发布的Docker管理工具还有Machine以及Compose。Swarm是一套较为简单的工具,用以管理Docker集群,使得Docker集群暴露给用户时相当于一个虚拟的整体。Swarm将一群Docker宿主机变成一个单一的、虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client均可以直接和Swarm直接通信。Swarm几乎全部用Go语言完成开发,Swarm0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们以及支持更多的Docker命令以及集群驱动。Swarm deamon只是一个调度器(Scheduler)加上路由器(Router),Swarm自己不运行容器,它只是接受Docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照样运行,当Swarm恢复运行之后,它会收集重建集群信息。

    2 Docker Swarm特点

    • 对外以Docker API接口呈现,这样带来的好处是,如果现有系统使用Docker Engine,则可以平滑将Docker Engine切到Swarm上,无需改动现有系统。
    • Swarm对用户来说,之前使用Docker的经验可以继承过来。非常容易上手,学习成本和二次开发成本都比较低。同时Swarm本身专注于Docker集群管理,非常轻量,占用资源也非常少。简单的说,就是插件化机制,Swarm中的各个模块都抽象出了API,可以根据自己的一些特点进行定制实现。
    • Swarm自身对Docker命令参数支持的比较完善,Swarm目前和Docker是同步发布的。Docker的新功能都会第一时间在Swarm中体现。

    3 Docker Swarm架构

    • Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以单独将Swarm部署于一个节点。另外,自然需要一个Docker集群,集群上每一个节点均安装Docker。

    Docker Swarm架构

    4 Docker Swarm的使用

    4.1 环境准备

    • 准备三台已经安装Docker Engine的CentOS系统主机(Docker的版本必须是1.12以上的版本,老版本不支持Swarm)。
    • Docker容器主机的ip地址固定,集群中所有工作节点必须能访问该管理节点。
    • 集群管理节点必须使用相应的协议并且保证端口可用。
    集群管理通信:TCP,端口2377
    节点通信:TCP和UDP,端口7946
    覆盖型网络:UDP,端口4789
    
    备注:
    192.168.219.100 管理节点
    192.168.219.101 工作节点
    192.168.219.102 工作节点
    

    4.2 Docker Swarm集群搭建实现

    注意:在测试时,最好关闭防火墙。

    • 在192.168.219.100机器上创建Docke Swarm集群。
    docker swarm init --advertise-addr 192.168.219.100
    
    备注:
    --advertise-addr将该IP地址的机器设置为集群管理节点,如果是单节点,无需该参数
    
    • 查看管理节点集群信息:
    docker node ls
    

    在管理节点创建Docker Swarm集群

    • 向Docker Swarm中添加工作节点:在两个工作节点中分别执行如下的命令,ip地址是manager节点的
    # 在192.168.219.101中执行如下的命令
    docker swarm join --token SWMTKN-1-1b8cgc1f61a9j7a84voptpfm15afnmfp8hpcizvichqid5ko11-cf094t5ymy0hzaharru9ocoty 192.168.219.100:2377
    
    备注:
    --token XXX:向指定集群中加入工作节点的认证信息,xxx认证信息是在创建Docker Swarm时产生的
    
    # 在192.168.219.102中执行如下的命令
    docker swarm join --token SWMTKN-1-1b8cgc1f61a9j7a84voptpfm15afnmfp8hpcizvichqid5ko11-cf094t5ymy0hzaharru9ocoty 192.168.219.100:2377
    
    备注:
    --token XXX:向指定集群中加入工作节点的认证信息,xxx认证信息是在创建Docker Swarm时产生的
    
    • 查看管理节点集群信息:
    docker node ls
    

    向Docker Swarm中添加工作节点

    4.3 Docker Swarm中部署alpine服务

    4.3.1 部署服务

    docker service create --replicas 1 --name helloworld alpine ping docker.com
    
    备注:
    docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]:用于在Swarm集群中创建一个基于alpine镜像的服务
    --replicas num:指定了该服务只有一个副本实例
    --name 服务名称:创建成功后的服务名称
    ping docker.com:表示服务启动执行的命令
    

    部署alpine服务

    4.3.2 查看服务

    • 查看服务列表:
    docker service ls
    

    查看服务列表

    • 查看部署具体服务的详细信息:
    docker service inspect 服务名称
    

    查看部署具体服务的详细信息

    • 查看服务在集群节点上的分配以及运行情况:
    docker service ps 服务名称
    

    查看服务在集群节点上的分配以及运行情况

    4.3.3 修改副本数量

    docker service scale helloworld=5
    

    修改副本数量

    4.3.4 删除服务

    docker service rm 服务名称
    

    删除服务

  • 相关阅读:
    oc kvc的模式:匹配搜索模式(模式匹配)、装包解包
    编程语言的多态与动态
    swift的@objc总结
    swift函数的调用约定
    PHP实现微信退款的分析与源码实现
    【MySQL】20个经典面试题,全部答对月薪10k+
    redis面试题总结
    【Redis缓存机制】1.Redis介绍和使用场景
    php四种文件加载语句
    做网站-mysql表字段设计
  • 原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/13660346.html
Copyright © 2020-2023  润新知