转载请注明出处:葡萄城官网,葡萄城为开发者提供业余的开发工具、解决方案和服务,赋能开发者。
大家在工作中或者或多或少都接触过Docker,那你晓得Docker以及容器化背地的原理到底是什么吗?
容器化技术满天下,那为什么只有Docker被大家所熟知呢?
后Docker时代,到底谁才是云原生时代的王者?
咱们置信本系列文章能帮您解答这些纳闷。
被“厌弃”的物理服务器
在云时代以前,开发者如需构建一个线上的站点,必须本人保护物理服务器。然而随着业务倒退,大体量服务器逐步增多,随之而来的是硬件、场地和保护老本的一直进步。对于面向C端的站点来说,网络热点事件具备随机性,流量的变动并不可控,难免会遭逢站内流量暴涨的状况。此时如果没有备用服务器,突发的大流量很可能会冲垮整个站点。但在没有突发事件的时候,备用服务器的洽购和保护老本又让人不可疏忽。
(运维的传统艺能:上线拜祖,图片来自网络)
哪里有问题,哪里就有商机。有人想到,如果买一批服务器放在外网,安顿专人治理,而后依照用户的须要租赁进来,不正好解决了这个问题吗?
于是,一场云计算的好戏,正式演出。
虚拟机还是“超重”了
云计算时代的大幕拉开,大厂先后登台,让咱们先简略做一下回顾。
- 2006年,亚马逊成立aws,从云端存储业务开始。
- 2008年,云计算初创。
- 2009年,阿里云成立。目前最新的数据表明,2020年度IaaS市场份额考察,阿里云位居寰球第三,亚太第一;前两名别离是亚马逊和微软,市场份额达9.5%,超过谷歌的6.1%,亚马逊40.8%,微软17%。国内市场份额40% ,第二是华为云,占18%。
- 2010年,OpenStack由NASA公布。OpenStack是一个IaaS架构,能够用其架构来搭建本人的公有云,让任何人都能够自行创立和提供云计算服务。比照而言,AWS和aliyun都是自研架构,OpenStack是开源的。所以公司如果须要,齐全能够接入OpenStack搭建本人的公有云。(当然前提须要有OpenStack外围开发能力)。
- 2010-2013年之间,云计算的寰球份额被aws和OpenStack瓜分。
这时的云计算技术,实质都是虚拟化技术,将硬件资源作为基础设施提供给用户,简称IaaS。简略了解,IaaS就是将一个很大的服务器,通过虚拟化技术拆分成多个小的虚构服务器,提供服务,相似于在本机装了虚拟机。
(云计算主力玩家的进场工夫,图片来自网络)
然而,IaaS时代的虚拟机还是太过于轻便了。每一台虚拟机都须要耗费CPU、内存等计算资源能力撑持利用的运行。即使利用再小,零碎的开销都是固定的老本。如何为IaaS减肥,让虚拟机零碎的开销降到最低?
2013年开始,云计算正式进入了PaaS时代。PaaS时代,云计算所销售的单元,从虚拟机变成了利用运行平台。于是,云厂商提供的服务更多,资源利用率也更高了。
什么是PaaS?咱们用一个艰深的例子来解释。如果咱们当初是一个烧饼店老板,采纳IaaS模式意味着咱们须要用他人厨房、锅炉、煤气,本人和面做馅料,做烧饼。如果是PaaS,咱们烧饼的面粉、馅料和调料都是他人提供好了,咱们只须要把饼烤熟。
云厂商该如何构建一套好用的PaaS服务呢?借力开源我的项目,成为各厂商的共识。
Cloud Foundry开启PaaS开源时代
PaaS的外围是平台。最早呈现在开发者视线中的PaaS开源我的项目中,vmware创建的Cloud Foundry是知名度最高的。与IaaS提供云上虚拟机的服务形式不同,基于Cloud Foundry的云计算可能提供利用托管的性能。开发者只须要通过一条简略的命令比方:cf push "我的利用",就能够将我的项目打成一个压缩包,上传到Cloud Foundry服务器。而Cloud foundry会开启本人的调度器,在一群云主机中找到满足用户需要的主机(零碎版本、性能、个数),而后通过容器化技术,在主机上创立一个容器,在容器中下载压缩包,解压并运行,最终成为一个对外提供服务的利用。
此外,Cloud Foundry平台对这些利用我的项目提供散发,灾备,监控,重启等等服务(这也是咱们提供给用户的外围服务)。这种托管服务解放了开发者的生产力,让他们不必再关怀利用的运维情况,而是分心开发本人的利用。而这就是PaaS的“初心”,平台即服务。
(Cloud Foundry提供的服务)
这里就会有同学问了,容器是什么?容器是用来解决多个利用资源抵触与隔离性问题的技术。Linux上的namespace机制和cgroups命令都能用做资源隔离和限度,这些都是容器技术。
容器技术并不是Docker创立的,在Docker衰亡之前,就曾经被其余公司商用了,然而为什么当初一谈起容器,所有人第一工夫想到的就是Docker呢?这就要提到Cloud Foundry的死亡。
从Cloud Foundry到Docker
Cloud Foundry仿佛曾经和咱们当初应用的云性能区别不大,但2021年的现实情况却是Cloud Foundry曾经死了。
咱们看过互联网上很多文章,再联合咱们活字格私有云开发的教训,咱们认为这个我的项目的致命缺点集中它的打包机制上。
Cloud Foundry最外围的组件就是利用的打包和散发机制,也是开发者打交道最多的性能。Cloud Foundry为每一种支流的语言都定义了一套打包的形式,这些形式之间毫无章法。但就是这个打包性能,成了Cloud Foundry的软肋,始终为用户所诟病。开发者不得不为每一种语言,每一种框架,甚至是每个版本利用保护一个打好的包,还有可能呈现本机运行胜利,打了个包上传上去之后就无奈运行的状况。状况最重大的时候,开发者在调试云平台零碎上花的工夫都曾经比开发一个新软件的工夫要长了。
原本是为赋能开发者的而生的技术,Cloud Foundry却对开发者如此不敌对。当开发者的埋怨积攒到肯定水平,想要在PaaS浪潮地方站稳脚跟的Cloud Foundry被后起之秀Docker“红牌罚出局”也就牵强附会了。
最后,Docker是一个过后还叫dotCloud的公司(2010年由所罗门海克斯创立,Y Combinator孵化)开发的容器我的项目。在Cloud Foundry困于打包问题时,Docker正在轻轻积蓄力量,在开源后的短短几个月内就迅速崛起,成为一个不容忽视的PaaS技术计划,吸引了云服务开发者的眼球。
滑稽的是,在Docker刚开源的时候,Cloud Foundry的首席产品经理 James Bayer就在社区做了一次具体的比照,通知用户Docker和Cloud Foundry一样,都是应用了Namespace和Cgroups技术的沙箱而已,没什么值得关注的。
事实上,Docker也的确就和他所说的一样,采纳了这个“传统”的技术计划,然而Docker与Cloud Foundry相比,做了一点小小的翻新,体现了所罗门海克斯的远见。从2010他就开始思考利用打包的一致性与复用性问题,并提出了翻新的解决方案,最终对Cloud Foundry造成了毁灭性的打击。这个解决方案就是Docker镜像。
(Docker,图片来自官网)
刚开源的Docker迅速爆火,憨态可掬的小鲸鱼,对用户敌对的文档,三分钟部署一个Nginx集群的宣传语,以及Docker Image这个 “微不足道的翻新”,让Docker席卷整个PaaS畛域。
Docker的制胜法宝:镜像
Docker胜利的要害,在于Docker镜像简直完满地解决了Cloud Foundry在打包方面的软肋。
所谓的镜像,其实也是一个压缩包,然而比起Cloud Foundry那种执行文件+启动脚本的打包后果,镜像提供给用户的是一套残缺的运行环境,每一个镜像都能够指定操作系统版本,外部能够构建程序执行的文件构造,并且一份镜像能够齐全共享在多处应用。
此外,Docker还给开发者提供了一套欠缺的镜像制作流程,这套流程与编程语言和框架无关。开发者只须要依照该流程,定制对应程序所须要的运行的操作系统环境即可。
总之,Docker 镜像完满解决了两个问题:
1.本地环境和服务器环境的差别
2.同一份镜像能够让所有的机器进行复用
从这一刻开始,PaaS的市场曾经齐全是Docker的天下。
小结
本文是系列文章的第一期,咱们一起回顾了IaaS取代物理服务器,基于IaaS构建PaaS的倒退路线。在构建PaaS时,咱们经验了Cloud Foundry的没落,见证了Docker的胜利。
然而,只依附Docker就能构建起残缺的PaaS服务吗?咱们的活字格私有云版最终抉择了哪个技术计划?云计算的故事还没有讲完,敬请期待下期精彩内容。