Docker Swarm
Swarm 是使用 SwarmKit 构建的 Docker 引擎内置(原生)的集群管理和编排工具。 Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。
使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。Swarm mode 内置 kv 存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker 原生的 Swarm 集群具备与 Mesos 、 Kubernetes 竞争的实力。使用 Swarm 集群之前需要了解以下几个概念。
运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。节点分为 管理 (manager) 节点和工作 (worker) 节点 。
管理节点用于 Swarm 集群的管理, docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader ,leader 通过 raft 协议实现。
工作节点是任务执行节点,管理节点将服务 ( service ) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。来自 Docker 官网的这张图片形象的展示了集群中管理节点与工作节点的关系。
任务(Task) 是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器; 服务(Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:
两种模式通过 docker service create 的 --mode 参数指定。来自 Docker 官网的这张图片形象的展示了容器、任务、服务的关系。
我们这里利用上一节的 docker machine 来充当集群的主机,首先先创建一个 manager 节点,然后在该节点上执行初始化集群命令:
执行 docker swarm init 命令的节点自动成为管理节点。
管理节点初始化完成后,然后同样的用 docker-machine 创建工作节点,然后将其加入到管理节点之中去即可:
我们可以看到上面的提示信息: This node joined a swarm as a worker. ,表明节点已经加入到 swarm 集群之中了。
经过上边的两步,我们已经拥有了一个最小的 Swarm 集群,包含一个管理节点和两个工作节点。
管理节点使用 docker node ls 查看集群:
使用 docker service logs 来查看某个服务的日志。
使用 docker service rm 来从 Swarm 集群移除某个服务:
正如之前使用 docker-compose.yml 来一次配置、启动多个容器,在 Swarm 集群中也可以使用 compose 文件(docker-compose.yml)来配置、启动多个服务。
上一节中,我们使用 docker service create 一次只能部署一个服务,使用 docker-compose.yml 我们可以一次启动多个关联的服务。
我们以在 Swarm 集群中部署 WordPress 为例进行说明:(docker-compose.yml)
其中 constraints: [node.role == manager] 是调度策略,文档地址: https://docs.docker.com/swarm/scheduler/filter/
在 Swarm 集群管理节点新建该文件,其中的 visualizer 服务提供一个可视化页面,我们可以从浏览器中很直观的查看集群中各个服务的运行节点。
在 Swarm 集群中使用 docker-compose.yml 我们用 docker stack 命令,下面我们对该命令进行详细讲解。
部署服务使用 docker stack deploy ,其中 -c 参数指定 compose 文件名。
要移除服务,使用 docker stack down :
该命令不会移除服务所使用的 数据卷 ,如果你想移除数据卷请使用 docker volume rm 。
伏阁苯唑: Mesos + Docker如何构建你自己的框架Apache Mesos是一个集群管理器,能够简化在一堆共享服务器池中运行任务的复杂性,Docker是一个轻量容器用来部署打包的服务,类似一
措勤县17817067594: 如何从零开始搭建Docker Swarm集群 - ?
伏阁苯唑: 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp://0.0.0.0:2375到OPTIONSOPTIONS='-g /cutome-path/docker -H tcp://0.0.0.0:2375'3. CentOS6.6 需要另外添加-H unix:///var/run/docker.so...
措勤县17817067594: docker有哪些web管理工具比较好用 - ?
伏阁苯唑: Docker Swarm 是官方发布的集群容器管理工具.它的特点是:比较轻量级,无缝支持标准的docker API. 深入浅出Swarm 一文很清晰地讲解了它的架构和命令.本文从零开始搭建并管理一个swarm集群.
措勤县17817067594: S11:关于Docker Swarm的简介?
伏阁苯唑: 非常好的视频讲解,猫猫辛苦了
措勤县17817067594: docker swarm 有在生产环境中用的企业吗 - ?
伏阁苯唑: Docker Swarm 是官方发布的集群容器管理工具.它的特点是:比较轻量级,无缝支持标准的docker API. 深入浅出Swarm 一文很清晰地讲解了它的架构和命令.本文从零开始搭建并管理一个swarm集群.准备工作 我们需要先安装 virtualBox 和 ...
措勤县17817067594: Docker Compose 怎么和Docker Swarm配合使用的 - ?
伏阁苯唑: 基于下面的需求: 1. 虽然单个Docker容器能够100%移植到任何平台,但是如何确保多容器分布式应用也是100%可移植?涵括范围从准备阶段到生产阶段 或跨数据中心,或在公有云之间.2.我们已经实现Docker标准化,但是如何在这些标准...
措勤县17817067594: 如何在Fedora / CentOS上面升级Docker 1.6 - ?
伏阁苯唑: Docker,一个流行的将软件打包的开源容器平台,已经有了新的1.6版,增加了许多新的特性.该版本主要更新了Docker Registry、Engine、 Swarm、 Compose 和 Machine等方面.这次发布旨在提升性能、改善开发者和系统管理员的体验.让...
措勤县17817067594: docker可以搭建分布式吗 - ?
伏阁苯唑: docker官方有swarm 第三方有k8s可搭分布式集群