Docker项目备受追捧,但用户最终要部署的还是他们自己的网站,服务,数据库,这就意味着,那些能够为用户提供平台层能力的工具才会真正成为开发者们愿意付费的产品。而Docker项目这样一个只能用来创建和启停容器的小工具,最终只能充当这些平台的幕后英雄。
Docker的老朋友兼对手CoreOS,是一个基础设施领域公司,核心产品是定制化的操作系统,用户可以按照分布式集群的方式,管理所有安装这个操作系统的节点。从而用户在集群里部署和管理应用就像单机一样方便。
Docker项目公布后,CoreOS认识到可以把容器的概念无缝的集成到自己的方案中,成为Docker项目的贡献者。
但在2014年底,CoreOS公司停止了与Docker公司的合作,并直接推出自己研制的Rocker(rkt容器).
相较于CoreOS是依托于一系列开源项目(例如Container Linux操作系统,Fleet作业调度工具,systemd进程管理和rkt容器),一层层搭建起来的平台产品,Swarm项目则是一个完整的整体来对外提供集群管理功能。
单机Docker项目
docker run "my_image"
多机Docker项目
docker run -H "my_Swarm_Cluster_API_Address " " my_image"
操作方式简单明了,Swarm通过具体的调度算法找到一个合适的Docker Daemon 运行起来。并开始受到Docker用户群的热捧
Docker公司及时通过并购完善自己的平台层能力,其中并购了Fig项目
Fig项目,第一次提出了容器编排(Container Orchestration)的概念.
编排主要是指用户如何通过某些工具或者配置来完成一组虚拟机以及关联资源的定义,配置,创建,删除等工作,然后由云平台来按照逻辑完成。
而对于Docker容器而言,就是一系列定义,配置和创建动作的管理。假如用户需要部署的是应用容器A,数据库容器B,负载均衡容器C,那么Fig就允许用户把A,B,C三个容器定义在一个配置文件中,并制定他们之间的关联关系(如 容器A 访问 数据库容器B)。
//通过指令
fig up
Fig就会把这些容器的定义和配置交给Docker API按照逻辑一次创建,你的一系列容器就都启动了。
而容器A与B之间的关联关系,也会交给Docker 的link功能通过写入hosts文件的方式进行配置。而且可以在Fig配置文件里定义各种容器的副本个数等相应参数,再加上PaaS的集群管理能力,完成一个类似PaaS的平台
Fig后来改名为Compose。
除此之外,开源项目中, 专门负责处理容器网络的SockerPlane(被Docker收购),专门处理容器存储的Flocker项目(被EMC收购),专门给Docker集群做图形化管理界面和对外提供云服务的Tutum项目(被Docker收购)
另一个挑战者,老牌集群管理项目Mesos和它背后的创业公司Mesosphere.
Mesos作为Berkeley主导的大数据套件之一,是大数据火热时最受欢迎的资源管理项目,也是跟Yarn项目难分伯仲的对手。
大数据所关注的计算密集型离线业务,其实并不像常规Web服务那样适合用容器进行托管和扩容,也没有对应用打包的强烈需求
所以hadoop,spark等项目也并未在容器技术上投下更大的资本。但是对于Mesos,天生的两层调度机制,让它更容易适应受众更广泛的PaaS业务
很快,Mesosphere公司发布了名为Marathon的项目,并成为了Docker Swarm的竞争对手。
mesos拥有自身的独特竞争力,超大规模集群的管理经验
mesos在几年前通过了万台节点验证,2014年后,被用在eBay等大型互联网公司的生产环境中。
Mesos + Marathon 的组合进化成高度成熟的PaaS项目,同时还能很好地支持大数据业务。旨在是用户能够管理一台机器那样管理一个万级别的物理集群。
同在这一年6月,Google公司宣布Kubernetes项目的诞生。