容器与虚拟机究竟有何本质上的差异?

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

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

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

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

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

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

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

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

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2015-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AILearning

【Scikit-Learn 中文文档 】安装 scikit-learn | ApacheCN

中文文档: http://sklearn.apachecn.org/cn/0.19.0/tutorial/basic/tutorial.html 英文文档:...

3778
来自专栏腾讯移动品质中心TMQ的专栏

这一次,卡98%问题终于解决了

今日话题 在新项目中,往往会有一些瓶颈的问题阻碍项目进程,如鲠在喉。而腾讯手游助手项目中,启动卡98%的问题就属于这种问题。幸运的是团队最终解决了此问题,现在回...

1.6K9
来自专栏我是极客人

电脑技巧| 使用电脑的经验分享

由于你懂得的原因,我们无法去官网下载androidSDK,后来QT下载也要翻墙。下面是解决因“墙”无法下载资料的镜像站网址: 1.教育网主要镜像站 东北地区: ...

1632
来自专栏腾讯云技术沙龙

彭磊:TencentHub的架构实现

TencentHub是一个集Docker镜像、二进制文件、helmcharts于一体的仓库存储服务。那么这一架构技术是如何基于Kubernetes 快速实现wo...

76341
来自专栏瓜大三哥

设置输出延迟

FPGA作为上游芯片发送数据给下游芯片,output_delay反应的是输出数据在被捕获之前应该稳定存在的时间。 ? Xdc是以下游芯片的时间点作为参考的。...

2357
来自专栏携程技术中心

干货 | 快速排障,VI能帮你做什么

1743
来自专栏ytkah

composer安装其实可以很简单 两行命令就解决了

  最近接了一个cakephp项目,就想着用composer安装实施,因为Composer 可以方便地帮你安装项目中声明所依赖的外部工具库(libraries)...

3146
来自专栏Java架构沉思录

如何优雅地实施持续交付部署

通过这种方法,我们指定了在更新剩余百分比的同时保持在服务状态的应用程序中的最小实例数,因此可以部署到尽可能多的目标。重复此过程,直到所有服务器都更新为新版本。

1051
来自专栏喵了个咪的博客空间

Docker应用容器引擎介绍与搭建

2046
来自专栏LuckQI

容器Docker学习系列四~源的修改增加效率

新公司现在开发环境都是在Liunx 下进行开发,系统是Ubuntu 18.4的版本.但是我们经常用Liunx系统的人就知道 我们经常用原生的源下载软件。速度不是...

1752

扫码关注云+社区

领取腾讯云代金券