Dawn's Blogs

分享技术 记录成长

0%

Docker学习笔记 (5) 三剑客之Compose Machine Swarm

Compose

Compose 项目负责实现对 Docker 容器集群的快速编排,用于快速部署分布式应用。

Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」

介绍

Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Compose 中有两个重要概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理。

Machine

Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。

Swarm mode

Swarm 提供 Docker 容器集群服务,使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。

基本概念

节点

集群中的节点分为管理(manager)节点和工作(worker)节点:

  • 管理节点:用于集群的管理,一个 swarm 集群中可以有多个管理节点,但是只能有一个 leader 节点,leader 节点由 raft 算法选举出。docker swarm 命令基本只能在管理节点执行(除了 docker swarm leave 命令可以在工作节点执行)。
  • 工作节点:用于执行任务,管理节点将服务 (service) 下发至工作节点执行。管理节点也默认为工作节点。

img

服务和任务

  • 任务(Task)是 swarm中最小的调度单位,目前来说就是一个单一的容器。
  • 服务(Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式,通过 docker service create--mode 参数指定:
    • replicated services:按照一定规则在各个工作节点上运行指定个数的任务。
    • global services:每个工作节点上运行一个任务。

下图是容器、服务、任务的关系:

img