当前位置:首页 > Web开发 > 正文

【转帖】极简Docker和Kubernetes发展史

2024-03-31 Web开发

2013年 Docker项目开源

技术图片

2013年,以AWS及OpenStack,以Cloud Foundry为代表的开源Pass项目,成了云计算领域的一股清流,pass提供了一种“应用托管”的能力。
当时的虚假机和云计算已经是比较普遍的技术了,主流用法就是租一批AWS或者OpenStack的虚拟机,然后用脚本或者手工的方式在机器上部署应用
Cloud Foudry这样的Pass项目,核心组件就是一套打包和分发机制,会调用操作系统的Cgroups和Namespace机制 为每个应用单独创建“沙盒”的隔离环境,然后在“沙盒”中运行这些进程,实现了多用户、批量、隔离运行的目的。
这个“沙盒”,就是所谓的容器。
这一年还叫dotCloud的Docker公司,也是Pass热潮中的一员。只不过,比起Heroku、Pivotal、Red Hat等大佬,dotCloud公司显得太微不足道,主打产品跟主流的CloudFoundry社区脱节,眼看就要阵亡的时候,dotCloud公司决定开源自己的容器项目Docker
“容器”其实不是什么新鲜的东西,不是Docker发明的,当时最热的Pass项目Cloud Foundry中,,容器也只是最底层、最不受关注的一部分。

短短几个月,Docker就迅速崛起了,然后Cloud Foundry等所有Pass社区还没来得及成为对手,就已经被淘汰了。

Docker项目大部分和Cloud Foundry容器大部分功能和实现原理是一样的,但是不一样的“Docker镜像”,解决了环境打包的问题,直接打包了应用运行所需要的整个操作系统,赋予了本地环境和云端环境调度一致的能力,避免了用户通过“试错”来匹配不同环境之间差异的痛苦过程, 这也是Docker的精髓。
Pass的定义变成了一套以Docker容器为技术核心,以Docker镜像为打包标准的“容器化”思路
2013年年底,dotClound公司正式改名为Docker公司

2014年 Docker发布Docker Swarm

技术图片

Docker发布Docker Swarn,以一个完整的整体来对外提供集群管理功能,最大的亮点就是完全使用Docker项目原来的容器管理API来完成集群管理。

docker run "容器"

只需要变成

docker run -H "swarm集群API地址" "容器"

用户只需要使用原先的docker指令创建一个容器,这个请求就会被swarm拦截处理,通过具体的调度算法找到一个适合的Docker Daemon。
这种方式对已经熟悉docker命令行的开发者们非常的友好。

Docker收购Fig,并改名Compose

技术图片

Docker公司收购了Fig项目,后改名为(Compose)。
Fig项目在开发者面前第一次提出了“容器编排”(Container Orchestration)
在云计算领域,“编排”主要指用户如何通过某些工具或者配置来完成一组虚拟机以及关联资源的定义、配置、创建、删除等工作,然后由云计算平台按照这些指定的逻辑来完成的过程
而容器时代,“编排”就是对Docker容器的一系列定义、配置和创建动作的管理。

Docker和Mesosphere公司的竞争

技术图片

除了Docker生态外,Mesos和背后的创建公司Mesosphere也是一个非常大的热力,Mesos是大数据最受欢迎的资源管理项目,跟Yarn项目竞争的实力派对手。
大数据关注的计算密集型离线业务,其实不像Web服务那样适合用容器进行托管和扩容,也没有应用打包的强烈需要,所以Hadoop、Spark等项目现在也没在容器技术投入很大的精力,但是Mesos作为大数据套件之一,天生的两层调度机制让它非常容易从大数据领域独立出来去支持更广泛的Pass业务,所以Mesos公司发布了Marathon项目,成为了Docker Swarm的一个强有力的竞争对手。
虽然不能提供像Swarm那样的Docker API,但是Mesos社区拥有一个非常大的竞争力:超大规模集群管理经验
Mesos+Marathon组合进化成了一个调度成熟的Pass项目,同时能支持大数据业务,

Docker和CoreOS

CoreOS是一个基础设施领域创业公司,核心产品是一个定制化的操作系统,用户可以按照分布式集群的方式,管理所有安装了这个系统的节点,使用用户在集群里部署应用像使用单机一样方便
Docker项目发布后,Corecd很快认识到可以把容器的概念无逢集成到自己的这套方案中,从而为用户提供更高层次的Pass能力,所以CoreOS很早就成了Docker项目的贡献者,然而在2014年结束了合作,推出了自己的容器Rocket(rkt),然而这个rkt容器完全被Docker公司压制了。

OCI标准制定

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41255.html