基本概念
Docker是使用google公司推出的go语言进行开发实现,基于linux内核的cgroups,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主与其他的隔离的进程,因此也也被称为容器。
Docker在容器的基础上进一步封装,从文件系统、互联网络到进程隔离等等,极大简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。
Docker Swarm是Docker官方三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。它可以将多个Docker主机封装为单个大型的虚拟机Docker主机,快速打造一套容器云平台。Docker 1.12.0+Swarm mode已迁入
Docker引擎,成为了Docker子命令docker swarm。与kubelet是竞争关系。
Swarm 是使用Swarmkit构建的Docker引擎(原生)的集群管理和编排工具。其涉及的相关术语
- 节点
运行的Docker的主机可以主动初始化一个swarm集群或者加入一个已存在的swarm集群。而运行Docker的主机就是一个swarm集群的一个节点(Node)。节点按功能可分为:管理节点、工作节点- 管理节点:用于swarm集群的管理,docker swarm命令基本职能在管理节点执行
- 工作节点:是任务执行节点,管理节点将服务(service)下发至工作节点执行。
注:管理节点也可充当工作节点的角色执行任务
- 服务和任务
任务(Task)是swarm中的最小的调度单位,目前来说就是一个单一的容器
服务(Service)是指一组任务的集合,服务定义任务的属性- 服务有两种模式
- replicated service 按照一定规则在各个工作节点上运行指定个数的任务
- global service 每个工作节点上运行一个任务
两种模式通过docker service create 的–mode参数指定
- 服务有两种模式
Docker Swarm集群
初始化集群
使用 docker swarm init初始化一个swarm集群
docker swarm init --advertise-addr 192.168.2.100
如果docker主机有多个网卡,拥有多个ip,必须使用–advertise-addr指定ip。执行 docker swarm init命令的节点自动称为管理节点
增加工作节点
在另外的工作节点上执行上一步创建管理节点时候输出的加入swarm集群的命令和token
如果忘记了加入初始化集群输出的