本文根据Chris Swan在2014年QCon上海大会的主题演讲《容器化的云》整理而成。在这次分享中,Chris阐述了从“容器技术”到“容器化的云”之间的差距,容器化对云计算领域的经济影响,以及容器的运维管理现状。
演讲者简介
Chris Swan,CohesiveFT公司CTO,CohesiveFT是一家成立于2006年的云网络公司,Chris Swan于2013年年初加入CohesiveFT。
Chris Swan之前在UBS(瑞士联合银行集团,简称瑞银集团)承担CTO角色,并曾经代表银行担任开放数据中心联盟指导委员会主任。在加入UBS之前,他在一家伦敦的投资银行——精品资本SCF担任CTO。Chris之前在瑞士信贷(Credit Suisse)主导过大量的高级研发、架构和工程定位工作,包括网络、安全、数据中心自动化和新应用平台的引进等。
在加入金融服务行业之前,Chris曾在英国皇家海军作战系统担任工程军官,他拥有工商管理硕士学位和约克大学的OUBS电子工程学士学位。
Chris是一个敏锐的制造者和黑客,他在伦敦和布莱顿等地的开源硬件、Raspberry Pi 、物联网社区非常活跃。他还是一些伦敦的科技和初期创业公司的顾问,也是InfoQ的云专栏的编辑。2014年的QCon上海是Chris Swan第七次参与的QCon大会,也是他第一次在国内的QCon上演讲。
容器(containers)的现状
容器是一项历史悠久的技术,应用其实也已经相当广泛。像是Wordpress、Drupal、Joomla这些网站托管服务,以及早年VPS服务当中的OpenVZ主机,之所以能够提供相对廉价的服务,背后都有容器技术的支持。Google可以说从2006年开始一直大力推动容器技术的应用,现在Google的容器实例增长速度超过了每周20亿个;Google甚至会在容器当中跑虚机,在容器中的虚机里面再跑容器。
但是,Docker的出现,给容器的世界带来了深刻的改变。它并非对容器技术本身进行变革,但无论是IBM AIX上的LPAR,还是Linux Containers的技术,这些东西都仅仅是运行时。Docker跟它们最大的不同在于,Docker是由构建(build)-交付(ship)-运行(run)这三部分组成的——构建与交付是跟运行时同等重要的事情(如果不是更重要的话)。
在以前,你想要在一个地方开发构建,然后把构建好的东西运到另一个地方运行,是一件很困难的事情。即使是虚拟机,也没有很好的解决这种“工作负载可移植性”的问题。但是一个docker file则是这样的一个东西:我们可以把一个地方构建的输出弄成一个镜像,把这个镜像挪到另一个地方,然后让这个镜像在新的地方运行。Docker Hub可以说是docker体系的整个生态系统,你可以用任意工具和流程生成docker文件镜像,把镜像传输/交付到Docker Hub,然后运行。
这整个过程非常简单。比如我最近在玩WRTnode这个东西,要获取WRTnode的SDK,只需要很简单的一行docker run命令即可。
这种docker镜像有点像是瓶装饮料一样,就好比我们想喝啤酒,不需要自己去酿酒,只要拉开易拉罐就行。有了docker镜像,你无需再去摆弄各种各样的工具链和SDK,只需“拉开易拉罐”即可,因此我也将其称之为“瓶装的软件”。
一个量级的优势
容器技术相比虚拟机,其性能优势可以说达到了一个量级的差距。根据Boden Russell在OpenStack上做的一次基准测试报告,一个KVM实例的平均内存消耗有292MB,而一个docker实例的平均内存消耗在49MB左右。在CPU overhead和启动时间方面,docker基本都比KVM有一个量级的优势。
目前,一个AWS上的micro实例,每小时的按需使用成本大约在一美分多一些。如果用docker来提供实例,那么每小时的按需使用成本很可能会做到0.1美分。这一点对于云经济至关重要。正如经济学家William Stanley Jevons的理论所呈现的,随着商品的价格越便宜,人们使用它们的场景和频率会越来越多。
容器的局限性
既然容器技术有如此大的优势,为什么基于容器的云现在还没有成为主流?我认为主要还是安全性的问题。虚拟机可以利用来自硬件的信任机制来提升安全性,这些机制在Intel Virtualization Technology Evolution的演示中有详细的介绍。即使如此,虚拟机仍然被视为相对不安全,比如前一段时间Xen爆出一个漏洞,导致AWS不得不大量升级自己的主机。
即使是虚拟机也仍然有被攻破权限的危险,而现在的容器,虽然名为“容器”,但从安全的角度其实几乎算不上有什么隔离性了。
基于容器的PaaS现状
Docker流行起来之后,我们很快看到一些相关的PaaS服务冒出来,如Deis、Octohost、Dokku和Flynn等。另外像是CloudCredo、Apcera Continuum、Bosh、Cloud Foundry的工作也对Docker生态产生了促进作用。
PaaS这个东西有点被过度概念化,不同的观点都掺乎在里面。但以往来说,无论哪种PaaS都意味着开发者被迫使用特定的语言、特定的框架去开发他们的应用,而开发者不喜欢受限。
我认为Docker实质上可能是“反PaaS”的,它将可能让我们脱离PaaS的种种技术选择限制。我认为PaaS的实质是有关运维性——它实际上提供的是将部署、监控、扩容、资源管理简化的能力。
Docker的运维管理(编排,orchestration)
我在前一段时间的DockerCon上看到Brad Rydzewski的一条推文,很有意思,上面是这么说的:
在DockerCon上我学习到了一件事实:所有人都在构建自己的编排平台。千真万确。所有的人。
的确,DockerCon上每一家公司都分享他们自己做的一些编排工具,比如Twitter发起的Apache Mesos,来自Facebook的Tupperware,以及Google的Kubernetes。我自己更看好Kubernetes这个项目,现在微软Azure和IBM Softlayer也都在参与这个项目了。
总结
我希望大家会后考虑一下,对于这个容器化的云你会做些什么?如何利用它的优势,做一些你之前没有办法做的事情?容器是有很多年的技术,但是现在这个容器化的云是不一样的东西,未来会被更多的使用。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。