当前位置:   article > 正文

Docker三剑客(三大编排工具):Compose、Machine和Swarm_在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只

在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只

一、Docker三大编排工具:

1、Docker Compose:是用来组装多容器应用的工具,可以在 Swarm集群中部署分布式应用。
2、Docker Machine是支持多平台安装Docker的工具,使用 Docker Machine,可以很方便地在笔记本、云平台及数据中心里安装Docker。
3、Docker Swarm是Docker社区原生提供的容器集群管理工具。

https://blog.csdn.net/wfs1994/article/details/80601027

二、Docker Compose

Github下载地址

Compose是用来定义和运行一个或多个容器应用的工具。使用compaose可以简化容器镜像的建立及容器的运行。
Compose使用python语言开发,非常适合在单机环境里部署一个或多个容器,并自动把多个容器互相关联起来。

【compose的概述】

在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。

注:compose:[kəmˈpəʊz],组成; 作曲; 构成(一个整体); 创作(音乐); 撰写(信函、讲稿、诗歌等);排…的版

compose 使用 YAML 文件来定义多容器之间的关系,一个 docker-compose up 就可以把完整的应用跑起来。

本质上, compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。

它通过解析容器间的依赖关系顺序地启动容器,而容器间的依赖关系由 YAML 文件中的 links 标记指定。

【compose的核心概念】

Compose 中有两个重要的概念:

1)服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

2)项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

安装Docker compose】

三、Docker Machine

Github下载地址

Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护

【Machine概述】

Docker Machine 是一个简化Docker 安装的命令行工具。

通过一个简单的命令行即可在相应的平台上安装 Docker,为用户提供了灵活的功能,使得用户可以在任一主机上运行 Docker 容器。

简单说,一个 Docker Machine 就是一个 Docker host 主机和经过配置的 Docker client 的结合体

技术上讲, Machine 是一个框架,比较开放。对于任何提供虚拟机服务的平台,只要在这个框架下开发针对该平台的驱动,Docker Machine 就可以集成到该平台,在该平台上执行创建、删除、启动、停止等行为。

Machine 架构:

 

【Machine 的基本概念和流程】

Docker Machine 首先会创建一个虚拟机并在其上创建一个 Docker host,然后使用Docker client 和 Docker host 通信,从而在 Docker host 上创建镜像,启动容器。

Docker Machine 创建虚拟机的时候需要制定相应的驱动,目前支持本机的驱动有 VirtualBox 驱动、VMware 驱动及 Windows 下的 Hyper-V 驱动。除此之外,Machine 还支持云主机的创建。只要开发了符合框架规范的驱动,Docker Machine 就可以支持相应的平台。

Machine 创建的 Docker host 的IP地址是所创建的虚拟机的IP地址。

使用Docker Machine 及 VirtualBox 驱动创建本地虚拟机并搭建 Docker host 的运行流程如下:

1)执行 docker-machine create --driver virtualbox dev命令。此命令首先创建用于 Docker client 和 Docker host 通信用的 CA 证书。    

2)其次创建 VirtualBox 虚拟机, 并配置用于通信的 TLS 参数及配置网络, 最后部署 Docker 的运行环境 即 Docker host。

3)在 Docker client 里运行 eval "$(docker-machine env dev)"命令, 配置用于 Docker host 通信的环境变量。

4)使用 docker 相关命令创建或启动相应的容器。
 

三、Docker Swarm

Docker Swarm 提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台

注:swarm,[swɔːm],一大(蜜蜂等昆虫); 一大批(向同方向移动的人);成群地来回移动; 成群地飞来飞去;

Swarm mode内置kv存储功能,提供了众多的新特性,比如:具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker 原生的 Swarm 集群具备与 Mesos、Kubernetes 竞争的实力。

【概述】

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

Swarm 是 Docker 社区提供的原生支持 Docker 集群的工具。 它可以把多个 Docker 主机组成的系统转换成为单一的虚拟 Docker 主机。

Swarm 对外提供两种 API:

一种是标准的 Docker API,例如 Dokku、Compose、Krane、Flynn、Deis、Jenkins等;
另一种是 Swarm 的集群管理 API,用于集群的管理

ps:

Swarm工具本身不是很成熟,不建议用在生产环境。而 Google 开源的Kubernetes 是目前容器生态圈中最受欢迎的编排部署工具。Kubernetes 的架构基于有多个 Minion 节点的 Master 服务器。
 

【swarm的节点】

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node)

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

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

2) 工作节点:是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。也可以通过配置让服务只运行在管理节点
 

集群中管理节点与工作节点的关系如下所示:

服务和任务:

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

服务 (Services) 是指一组任务的集合,服务定义了任务的属性。

服务有两种模式:

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

ps : 两种模式通过 docker service create 的 --mode 参数指定

【容器、任务、服务的关系如下】

转自:@Docker三剑客(三大编排工具):Compose、Machine和Swarm_ଲ小何&才露煎煎饺的博客-CSDN博客_docker编排工具有哪些

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/160505
推荐阅读
相关标签
  

闽ICP备14008679号