自容器概念兴起,就有很多人认为:容器将取代虚拟机,容器作为"虚拟化2.0"概念获得企业和开发者的关注。笔者认为,容器非但不会取代虚拟机,相反,二者或将形成一种互为补充的姿态,优化企业的IT体系。
容器的代表作Docker
对于很多程序员来说,或许还不够了解容器,但一定听说过Docker。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,Docker称之为:Build once,Run anywhere。
很多人都听说过Dcoker获得了IBM、微软、惠普、腾讯等企业的支持,其中Docker在腾讯英雄联盟游戏中的表现更让很多人都坚信,以Docker为代表的容器必然在不久的将来彻底代替虚拟机。
而Docker作为***的容器工具,和容器目前的事实标准收到越来越多人的关注,究竟容器/Docker与虚拟机之间的博弈会以何种方式收场,我们还不得而知,但笔者预测,未来容器技术可能会与虚拟化技术成为相辅相成的关系。
Docker与镜像概念
在2016年的DockerCon大会上,Docker再次推翻了之前PaaS层定义,树立了一个自己的新标准:Serverless无服务器架构。同时,Docker的镜像概念已经成为很多依托Docker技术成立的云企业的卖点。
镜像可以应用程序和它的应用环境一起打包,形成一个"集装箱",放入仓库。然后这个集装箱随时下载、解压、应用,减轻了开发者的负担,不但迅速还能够保证一致性。
Docker PK虚拟机
TCO:根据相关机构调查显示,超过百分之四十的企业选择用Docker是因为它比虚拟机更便宜。由于Docker是一款开源的容器引擎,这决定了Docker本身免费的事实。
而虚拟机是相较传统物理机更为节约资源的方式,因为它能形成一个有效的、独立的真实机器的副本,进而节约企业TCO,受到很多企业的欢迎。
敏捷性:当敏捷开发、微服务等概念逐渐深入,轻量化已经成为一种新风向。Docker直接建立在操作系统上的方式在启动方式,让秒级启动成为新常态,获得很多企业的认可。而模块化让扩展和迁移都更迅速、可靠,Docker允许我们轻松将应用程序的功能拆分成多个独立容器,让Docker轻量化特点进一步凸显。
安全性:与真实的物理机相比,虚拟机因为Hypervisor层的存在,让小白用户也可以对虚拟机进行任何操作,无须担心对机器本身造成任何损害。对于企业而言,虚拟机经过四十余年的发展已经成为一种成熟的IT技术,在隔离性、安全性上,虚拟机也显得更为无可挑剔,相比之下,虚拟机也更为安全。而Docker目前备受诟病的一个点就是:隔离性和安全性。
从实现原理上讲,Docker有着比虚拟机更少的抽象层,不需要硬件资源池化,不需要Guest OS。与容器相比,虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像,虚拟层可以为每个用户分配虚拟化后的CPU、内存和IO设备资源,为用户提供一个隔离性更强的系统环境。
结束语
Docker或者说容器技术和虚拟机并非简单的取舍关系,如果你希望一个完全隔离的和资源有保障的环境,那么虚拟机是你的不二选择;如果你只希望进程之间相互隔离,同时拥有轻量化的属性,那么linux容器技术或者Docker,才是更好的选择。