Docker三剑客

网友投稿 316 2022-10-21

Docker三剑客

Docker Machine、Docker Compose和Docker Swarm是Docker原生提供的三大编排工具,用来部署管理多个宿主机的Docker容器集群,号称“Docker三剑客”。随着Docker对K8S的支持,以及K8S的普及,这里的三剑客重在了解。

Docker Machine是Docker官方提供的一个命令行工具,它可以帮助我们在远程的机器上安装Docker,或在虚拟机host上直接安装虚拟机并在虚拟机中安装Docker。用于配置和管理Docker化的主机(带有Docker引擎的主机),运维人员可以使用一台Docker Machine主机在一个或多个虚拟机上安装Docker引擎。

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

Docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理它们,定义这些容器如何相互关联,这就需要容器编排工具。

作为Docker官方的编排工具,Docker Compose的重要性不言而喻,它可以让用户编写一个简单的模板文件。模板文件是Docker Compose的核心,涉及的指令关键字比较多,但是大部分的指令与docker run相关参数的含义是类似的,默认的模板名是docker-compose.yml(YAML文件格式)。利用模板文件,用户可以快速地创建和管理基于Docker容器的应用集群,并定义多容器之间的关系。一个docker-compose up 命令就可以运行完整的应用。

Docker Compose 是在单个服务器或主机上创建多个容器的工具,而 DockerSwarm 可以在多个服务器或主机上创建容器集群服务,将一群Docker宿主机抽象成一个单一的虚拟主机。

DockerSwarm的优势之一是原生支持Docker API,给用户的使用带来极大的便利。Swarm使用标准的Docker API作为其前端的访问入口,因此各种形式的基于标准API的Docker客户端工具(Docker Compose、Docker SDK、各种管理软件等)均可以直接与Swarm通信,甚至Docker本身都可以很容易地与Swarm集成,这大大方便了用户将原本基于单节点的系统移植到Swarm上。

Swarm的具体工作流程:Docker客户端发送请求给Swarm,Swarm守护进程是一个调度器(scheduler)加路由器(router);Swarm处理请求并根据调度策略发送至相应的Docker节点;Docker节点执行相应的操作并返回响应。

节点是Swarm集群的最小资源单位,每个节点实际上都是一台Docker主机(物理机或虚拟机)。Swarm集群中的节点分为两种。

管理节点(manager nodes):负责响应外部对集群的操作请求,并维护集群中的资源,监控集群状态,分发任务给工作节点。一般推荐每个集群设置5~7个管理节点。工作节点(worker nodes):负责执行管理节点安排的具体任务,为了提高资源利用率,默认情况下,管理节点自身也是工作节点。每个工作节点上运行代理(agent)来汇报任务完成情况。

Swarm集群是典型的主从(master-slave)架构,通过发现服务来选举中心管理节点,各个节点上运行代理接受中心管理节点的统一管理,集群会自动通过Raft协议分布式选举出中心管理节点,无须额外的发现服务支持,避免了单点的瓶颈问题,同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持。

Swarm的配置和状态信息保存在一套位于所有管理节点上的分布式etcd数据库中。该数据库运行于内存中,并保持数据的最新状态,并且它几乎不需要任何配置,只作为Swarm的一部分被安装,无须管理。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Rook部署ceph集群及简单使用
下一篇:使用Prometheus监控自建Mysql
相关文章

 发表评论

暂时没有评论,来抢沙发吧~