前言
了解一个未知的事物,最好的方式就是去了解这个事物的历史。现在容器化,微服务很火热,有必要去了解一下docker这个小鲸鱼背后的东西。
最热的服务器端技术
在如今,肯定可以不假思索的说,是容器,因为现在是2019年,如果是2013年,我们可不敢这么说.那时候最火热的是PaaS化。“应用托管”,那时候租了虚拟机之后,用脚本或者手动的在上面部署应用。这样部署应用就会有本地环境和云端环境不一致的问题,因此,那时候的公司,拼的就是,谁能更好的模拟云端的环境。而PaaS项目的出现,就是实现当时这个问题的最佳方案。
Cloud Foundry
当时最大的开源的PaaS项目。只需要一个命令
cf push "我的应用"
就可以将本地应用部署到云上。这就是实现了应用托管的功能。
“应用托管”如何是实现?
- 每一种主流的语言特定方式各自打包,上传(cf push的作用就等同于用户将应用的可执行文件和启动脚本打进了脚本当中,上传到了Cloud Foundry的云存储当中。)
- 在虚拟机创造各种沙盒隔离环境
- Cloud Foundry调度合适的虚拟机下载压缩包
- 机器上的Agent下载压缩包启动运行
而这个沙盒隔离环境,其实就是现如今所说的“容器”。
Dot Cloud公司
在随着PaaS的历史长河的流动过程中,dot Cloud这个公司,弱小,可怜又无助,无人问津,差一点就在PaaS的潮流中被抛弃。这个时候,这个公司决定开源一个项目,就是Docker项目。 这个Docker呢,其实同样也是使用了Cgroups和Namespace的方式来创造了容器,和Cloud Foundry等其他的PaaS项目基本没有什么区别,没有什么黑科技,因此那些PaaS平台的大佬也就没有将Docker放在眼里。
风云变幻
然而,世事无常,短短几个月,Cloud Foundry等其他的PaaS社区,还没有来得及成为Docker的对手,就被Docker直接宣告“出局”。
原因
先看看Cloud Foundry的一件上传
- 需要为每种语言、每种框架、甚至应用的每种版本单独维护一个打好的包。
- 打包过程没有章法
- 本地跑的好好的应用,需要修改和更改不少配置才能好好的在云端运行
- 表面一件发布,实际上一波三折、费劲心力
Docker成功,就是靠着Docker镜像,这个看起来无足轻重的一部分,但是却提供了一种非常方便的打包机制
- 完整操作系统的文件和目录
- 完全不需要任何配置和修改
这样做了之后,就是docker能够成功的精髓,那就是实现了本地环境和云端环境的高度一致!
结语
生产力解放之后。PaaS自然就被淘汰,CaaS(Container as a Service)变成了一种新兴的趋势。DotCloud公司也改名为Docker公司。成为了基础设施领域近十年难得一见的技术明星。