容器技术与虚拟化技术理解

来源:互联网 发布:gre数学难吗 知乎 编辑:程序博客网 时间:2024/05/16 17:42

http://blog.csdn.net/altermanzhu/article/details/74449882


容器技术与虚拟化技术理解

虚拟化技术

虚拟化技术即通过hypervisor将OS运行在物理设备或是宿主OS上,此两种虚拟化为裸机虚拟化和宿主虚拟化:

裸机
虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”型。
裸机型在虚拟化中Hypervisor直接管理调用硬件资源,不需要底层操作系统,也可以将Hypervisor看
作一个很薄的操作系统。这种方案的性能处于主机虚拟化与操作系统虚拟化之间。
宿主
虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,被称为“托管(宿主)”型。
托管型/主机型Hypervisor运行在基础操作系统上,构建出一整套虚拟硬件平台
(CPU/Memory/Storage/Adapter),使用者根据需要安装新的操作系统和应用软件,底层和上层的
操作系统可以完全无关化,如Windows运行Linux操作系统。主机虚拟化中VM的应用程序调用硬件资
源时需要经过:VM内核->Hypervisor->主机内核,因此相对来说,性能是三种虚拟化技术中最差的。

容器技术

容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。




  作为一种部署应用程序的全新方式,容器技术在短时间内获得了广泛关注,但是这种技术同样存在某些限制,并且和虚拟机存在本质上的不同。

       虚拟化技术已经改变了现代计算方式,它能够提升系统资源使用效率、消除应用程序和底层硬件之间的依赖关系,同时加强负载的可以移植性和安全性,但是hypervisor和虚拟机只是部署虚拟负载的方式之一。作为一种能够替代传统虚拟化技术的解决方案,容器虚拟化技术凭借其高效性和可靠性得到了快速发展,它能够提供新的特性,并且帮助数据中心专家解决新的顾虑。

  容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。

  虚拟机依赖于hypervisor,其通常被安装在“裸金属”系统硬件之上,这导致hypervisor在某些方面被认为是一种操作系统。一旦 hypervisor安装完成, 就可以从系统可用计算资源当中分配虚拟机实例了,每台虚拟机都能够获得唯一的操作系统和负载(应用程序)。

  通常,第一台虚拟机都将会被用来运行系统管理程序,比如Microsoft System Center。而之后的虚拟机可能包含其他企业负载,比如数据库、ERP、CRM、邮件服务器、媒体服务器、web服务器或者其他业务应用。虚拟机之间是完全隔离的——没有任何一台虚拟机知道(或者依赖)相同系统当中的另外一台虚拟机的存在——恶意软件、应用程序崩溃和其他问题只能影响一台虚拟机。虚拟机从一个虚拟系统被移动到另外一个当中,而不用考虑系统硬件和操作系统等因素。

  而容器环境的工作方式则有所不同。对于容器环境来说,需要首先安装主机操作系统,之后将容器层(比如LXC或libcontainer)安装在主机操作系统(通常是Linux变种)之上。在安装完容器层之后,就可以从系统可用计算资源当中分配容器实例了,并且企业应用可以被部署在容器当中。但是,每个容器化应用都会共享相同的操作系统(单个主机操作系统)。

  相比于虚拟机,容器拥有更高的资源使用效率,因为它并不需要为每个应用分配单独的操作系统——实例规模更小、创建和迁移速度也更快。这意味相比于虚拟机,单个操作系统能够承载更多的容器。云提供商十分热衷于容器技术,因为在相同的硬件设备当中,可以部署数量更多的容器实例。然而,单个操作系统有可能引起影响所有相关实例的单点事故。比如,恶意软件或者主机操作系统崩溃可能禁用或者影响所有容器。此外,容器易于迁移,但是只能被迁移到具有兼容操作系统内核的其他服务器当中,这样会无形中减少迁移选择。

  从实际应用的角度来说,容器和虚拟机可以在同一个数据中心当中共存,因此这两种技术被认为是互补的——为现代应用程序架构师和数据中心管理员添加了可用工具集,通过不同的方式为应用负载提供支持。



原创粉丝点击