docker学习笔记(四)docker-swarm 容器集群服务

一、简介

Docker SwarmDocker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。

Swarm 是使用 SwarmKit 构建的 Docker 引擎内置(原生)的集群管理和编排工具。

使用 Swarm 集群之前需要了解以下几个概念。

节点

节点分为管理 (manager) 节点和工作 (worker) 节点。

管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leaderleader 通过 raft 协议实现。

服务和任务

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

  • replicated services 按照一定规则在各个工作节点上运行指定个数的任务。
  • global services 每个工作节点上运行一个任务

两种模式通过 docker service create--mode 参数指定。

二、创建 Swarm 集群

创建节点

首先创建3个或者更多docker-machine。分别命名为:

  • manager
  • vm2
  • vm3

我们进入manager主机,使用 docker swarm init 在管理节点初始化一个 Swarm 集群。

加入节点

初始化完成后,将vm2vm3节点假如管理节点。

vm2vm3节中分别执行命令

管理节点

manager主机

三、服务管理

创建服务

manager主机中创建3个nginx副本的集群

创建成功后,访问任意节点ip即可。

查看服务

使用 docker service ls 来查看当前 Swarm 集群运行的服务。

使用 docker service ps 来查看某个服务的详情。

使用 docker service logs 来查看某个服务的日志。

服务伸缩

我们可以使用 docker service scale 对一个服务运行的容器数量进行伸缩。

当业务处于高峰期时,我们需要扩展服务运行的容器数量。

当业务平稳时,我们需要减少服务运行的容器数量。

删除服务

使用 docker service rm 来从 Swarm 集群移除某个服务。

四、composer 文件部署服务

部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。

docker-compose.yml参考如下:

查看服务

移除服务

要移除服务,使用 docker stack down


本文参考:

  • https://yeasy.gitbooks.io/docker_practice/swarm/