容器技术与传统虚拟化技术,两者虽然都属于虚拟化的技术,目标都是为了将一套应用程序所需的执行环境打包起来,建立一个孤立环境,方便在不同的硬件中移动,但两者的运作思维截然不同。
传统虚拟化技术如vSphere或Hyper-V是以操作系统为中心,传统虚拟化技术从操作系统层下手,目标是建立一个可以用来执行整套操作系统的沙盒独立执行环境,习惯以虚拟机(Virtual Machine)来称呼。而Container技术则是一种以应用程序为中心的虚拟化技术,Container技术则是直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来建立沙盒执行环境,Container技术产生的环境就称为Container。
传统虚拟化通过操作系统(“OS”)及其应用程序共享来自单个主机服务器或主机服务器池的硬件资源,而容器技术只共享主机OS内核、二进制文件和库,大大减少系统开销,为开发、测试、部署和移植提供便利。在这里,分别从隔离级别、系统资源、启动时间、镜像存储、集群规模和高可用策略等几方面阐述区别。
图中所示两者的具体区别:
一方面:虚拟机需要安装操作系统(安装Guest OS)才能执行应用程序,而Container内不需要安装操作系统就能执行应用程序。虚拟化最初被称为资源的抽象,它是单个物理资源的多个逻辑表示,或者是多个物理资源的一个逻辑表示。特定于服务器虚拟化的是多个物理资源的单一逻辑表示。虚拟化技术可以扩展硬件的容量,简化软件的重新配置过程。CPU虚拟化技术可以是多CPU并行的单CPU仿真,同时允许一个平台同时运行多个操作系统,应用程序可以在不同的空间和相互影响下运行,从而提高计算机的工作效率。
另一方面:容器技术不是在OS外来建立虚拟环境,而是在OS内的核心系统层来打造虚拟执行环境,透过共享Host OS的作法,取代一个一个Guest OS的功用。Container也因此被称为是OS层的虚拟化技术。以Docker为例,它允许开发人员打包他们的应用程序,并依赖于一个便携容器的包,然后发布到任何流行的Linux机器上,也可以实现虚拟化。而且容器完全是沙盒机制,没有任何接口(像iPhone应用程序)。很少有性能开销,并且可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖任何语言、框架或系统。
我们看出,在实际的生产环境中,虚拟化技术主要用于解决物理硬件过剩的高性能,旧的硬件容量的重构过低的重用,透明底层物理硬件,从而最大限度地利用物理硬件。而容器技术采用了轻量级虚拟化技术,它主要采取共享Host OS的作法,而不需在每一个Container内执行Guest OS,因此建立Container不需要等待操作系统开机时间,不用1分钟或几秒钟就可以启用,远比需要数分钟甚至数十分钟才能开启的传统虚拟机来的快。
容器技术也是一种虚拟化,但能大幅提升性能并支持灵活部署
分析世界讲方案,为您带来精彩的一页;
——垂直领域、专注原创;
——感谢阅读、感谢共鸣。
举报/反馈