弄浪的鱼

docker_vs_k8s

  • 容器技术的兴起源于 PaaS 技术的普及;

  • Docker 公司发布的 Docker 项目具有里程碑式的意义;

  • Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。

容器本身没有价值,有价值的是“容器编排”。

Docker 解决 Paas 应用打包困难的问题

2013~2014 年,以 Cloud Foundry 为代表的 PaaS 项目,逐渐完成了教育用户和开拓市场的艰巨任务,也正是在这个将概念逐渐落地的过程中,应用“打包”困难这个问题,成了整个后端技术圈子的一块心病。

出现这个问题的根本原因是,一旦用上了 PaaS,用户就必须为每种语言、每种框架,甚至每个版本的应用维护一个打好的包。这个打包过程,没有任何章法可循,更麻烦的是,明明在本地运行得好好的应用,却需要做很多修改和配置工作才能在 PaaS 里运行起来。而这些修改和配置,并没有什么经验可以借鉴,基本上得靠不断试错,直到你摸清楚了本地应用和远端 PaaS 匹配的“脾气”才能够搞定。

Docker 项目的出现,则为这个根本性的问题提供了一个近乎完美的解决方案。这正是 Docker 项目刚刚开源不久,就能够带领一家原本默默无闻的 PaaS 创业公司脱颖而出,然后迅速占领了所有云计算领域头条的技术原因。

Docker 项目给 PaaS 世界带来的“降维打击”,其实是提供了一种非常便利的打包机制。这种机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境和云端环境的高度一致,避免了用户通过“试错”来匹配两种不同运行环境之间差异的痛苦过程。

Docker 与开发者紧密结合并迅速崛起

  1. Docker 镜像通过技术手段解决了 PaaS 的根本性问题;
  2. Docker 容器同开发者之间有着与生俱来的密切关系;
  3. PaaS 概念已经深入人心的完美契机。

相比于其他正在企业级市场里厮杀得头破血流的经典 PaaS 项目们,Docker 项目的推广策略从一开始就呈现出一副“憨态可掬”的亲人姿态,把每一位后端技术人员(而不是他们的老板)作为主要的传播对象。

简洁的 UI,有趣的 demo,“1 分钟部署一个 WordPress 网站”“3 分钟部署一个 Nginx 集群”,这种同开发者之间与生俱来的亲近关系,使 Docker 项目迅速成为了全世界 Meetup 上最受欢迎的一颗新星。

Docker 一家独大企图进一步商业化

实际上,Docker 项目一日千里的发展势头,一直伴随着公司管理层和股东们的阵阵担忧。他们心里明白,虽然 Docker 项目备受追捧,但用户们最终要部署的,还是他们的网站、服务、数据库,甚至是云计算业务。

Docker 项目希望提供更多平台层能力,发布了 Docker Swarm、Fig(后来的 Compose)项目,向 Paas 进化。

Docker 也和 CoreOS 公司、RedHat 等产生利益冲突,同时拒绝了微软的天价收购,为后来 Kubernetes 项目的诞生埋下了伏笔。

Kubernetes 推出,容器技术尘埃落定

Docker 公司在 Docker 开源项目的发展上,始终保持着绝对的权威和发言权,并在多个场合用实际行动挑战到了其他玩家(比如,CoreOS、RedHat,甚至谷歌和微软)的切身利益。

于是,2015 年 6 月 22 日,由 Docker 公司牵头,CoreOS、Google、RedHat 等公司共同宣布,Docker 公司将 Libcontainer 捐出,并改名为 RunC 项目,交由一个完全中立的基金会管理,然后以 RunC 为依据,大家共同制定一套容器和镜像的标准和规范。

这套标准和规范,就是 OCI( Open Container Initiative )。OCI 的提出,意在将容器运行时和镜像的实现从 Docker 项目中完全剥离出来。这样做,一方面可以改善 Docker 公司在容器技术上一家独大的现状,另一方面也为其他玩家不依赖于 Docker 项目构建各自的平台层能力提供了可能。

所以这次,Google、RedHat 等开源基础设施领域玩家们,共同牵头发起了一个名为 CNCF(Cloud Native Computing Foundation)的基金会。这个基金会的目的其实很容易理解:它希望,以 Kubernetes 项目为基础,建立一个由开源基础设施领域厂商主导的、按照独立基金会方式运营的平台级社区,来对抗以 Docker 公司为核心的容器商业生态。

而为了打造出这样一个围绕 Kubernetes 项目的“护城河”,CNCF 社区就需要至少确保两件事情:

  1. Kubernetes 项目必须能够在容器编排领域取得足够大的竞争优势;
  2. CNCF 社区必须以 Kubernetes 项目为核心,覆盖足够多的场景。

2017 年 10 月,Docker 公司出人意料地宣布,将在自己的主打产品 Docker 企业版中内置 Kubernetes 项目,这标志着持续了近两年之久的“编排之争”至此落下帷幕。

2018 年 1 月 30 日,RedHat 宣布斥资 2.5 亿美元收购 CoreOS。

2018 年 3 月 28 日,这一切纷争的始作俑者,Docker 公司的 CTO Solomon Hykes 宣布辞职,曾经纷纷扰扰的容器技术圈子,到此尘埃落定。

参考

01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐

02 | 预习篇 · 小鲸鱼大事记(二):崭露头角

03 | 预习篇 · 小鲸鱼大事记(三):群雄并起

04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定