发布网友 发布时间:2024-10-15 15:18
共1个回答
热心网友 时间:2024-10-15 17:24
Docker Swarm是Docker官方三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。注意:Docker 1.12.0+ Swarm mode已经内嵌入Docker引擎,成为了docker子命令docker swarm,绝大多数用户已经开始使用Swarm mode,Docker引擎API已经删除Docker Swarm。
Docker 1.12 Swarm mode已经内嵌入Docker引擎,成为了docker子命令docker swarm。请注意与旧的Docker Swarm区分开来。Swarm mode内置kv存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得Docker原生的Swarm集群具备与Mesos、Kubernetes竞争的实力。
Swarm是使用SwarmKit构建的Docker引擎内置(原生)的集群管理和编排工具。使用Swarm集群之前需要了解以下几个概念。
节点:运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点。节点分为管理节点和工作节点。管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行(节点退出集群命令docker swarm leave可以在工作节点执行)。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader,leader通过raft协议实现。工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。
服务和任务:任务(Task)是Swarm中的最小的调度单位,目前来说就是一个单一的容器。服务(Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:replicated services按照一定规则在各个工作节点上运行指定个数的任务。global services每个工作节点上运行一个任务,两种模式通过docker service create的--mode参数指定。
创建Swarm集群:阅读基本概念一节我们知道Swarm集群由管理节点和工作节点组成。本节我们来创建一个包含一个管理节点和两个工作节点的最小Swarm集群。准备工作是准备三台虚拟机,并安装Docker。初始化集群在本机初始化一个Swarm集群。如果你的Docker主机有多个网卡,拥有多个IP,必须使用--advertise-addr指定IP。执行docker swarm init命令的节点自动成为管理节点。增加工作节点在另外两台服务器上执行上一步创建管理节点时候的输出的加入swarm集群的命令。如果没有保存上面加入集群的命令,后面又有一台机器想加入集群,可通过一下命令获取加入集群的命令。查看集群在管理节点使用docker node ls查看集群。这时候一个最小的集群就搭建好了。将工作节点升级为管理节点可以将工作节点升级为管理节点,保证管理节点的高可用。部署服务我们使用docker service命令来管理Swarm集群中的服务,该命令只能在管理节点运行。在创建好的Swarm集群中运行一个名为nginx的服务。现在我们使用浏览器,输入任意节点IP,即可看到nginx的默认页面。如果想修改服务副本数量,可执行命令。查看服务使用docker service ls来查看当前Swarm集群运行的服务。使用docker service ps来查看某个服务的详情。使用docker service logs来查看某个服务的日志。删除服务使用docker service rm来从Swarm集群移除某个服务。
利用Docker Swarm可以快速搭建一个最小集群,也可以在集群上部署服务,但是Swarm中并没有提供统一入口查看节点的资源使用情况。Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器,动态扩容等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型企业对于容器管理的全部需求。下载Portainer镜像并运行容器访问Portainer在浏览器中输入192.168.199.241:9000/即可。