Docker与Hypervisor有哪些不同?

docker容器与虚拟机有什么区别?docker与虚拟机性能比较

参与14

2同行回答

GaryyGaryy系统工程师某保险
过去容器和hypervisor经常被放在一起进行对比,但是现在开发人员正在尝试改变这种现状,希望找到一种方法将两种技术的特点相互融合。大多数人喜欢将虚拟化技术的两种主要实现方式——容器和hypervisor——以对比的方式进行讨论。这种思路将容器和hypervisor放在对立面上,选择...显示全部

过去容器和hypervisor经常被放在一起进行对比,但是现在开发人员正在尝试改变这种现状,希望找到一种方法将两种技术的特点相互融合。

大多数人喜欢将虚拟化技术的两种主要实现方式——容器和hypervisor——以对比的方式进行讨论。这种思路将容器和hypervisor放在对立面上,选择容器或是在实际环境中,容器和hypervisor不仅仅是竞争关系,不应该简单地将其拿来对比。事实上,容器和hypervisor能够共存,甚至相互促进对方发展。

容器技术的最大意义在于其不需要同时使用多个操作系统,而在hypervisor虚拟化环境当中每台虚拟机都需要使用独立的操作系统。显而易见,这种方式能够大幅度降低系统开销所占用的内存,能够为应用及其数据预留更多的空间。

使用容器技术能够节约大量操作系统所占用的内存空间。通常相比于hypervisor,使用容器能够在同一台服务器当中创建三倍的实例数量。在某些情况当中,比如完全一样的虚拟桌面,实例数量能够达到之前的十倍。从另外一个角度来说,特定负载所需的服务器数量也就大幅降低了。授权部分也会受到影响,企业只需要为每台服务器购买一个授权。由于应用成为共享镜像的一部分,因此也能够从中获益。

容器提升性能和安全性

容器技术还能够带来其他好处。相比于hypervisor,其启动速度更快,主要是因为镜像不需要从头进行加载。镜像具有更好的可移植性并且更加易于部署,因此能够在运营过程中为部署和敏捷性带来很大帮助。此外,测试报告显示相比于传统hypervisor,容器在完成某些特定任务方面具有很大的性能优势,最多只需要使用原有时间的15%。

容器技术拥有如此多的优势,以至于很多人不太理解除了行业内的保守派之外,容器技术为什么还没有完全取代原有hypervisor。毕竟,Docker在这个行业当中拥有很强的领导能力,并且容器技术也已经基本成熟。

容器是一种全新技术,并且正在快速发展。而与之对比的hypervisor则更加成熟,并且已经通过市场的证明。其在安全性方面不断加固,并且x86 VTx架构为其提供了硬件辅助,因此想要实现跨租户间的袭击几乎是不可能的。相对来说有人质疑容器更加脆弱,攻击者可能袭击底层操作系统,进而控制服务器当中的所有实例。

由此产生的结果是容器通常被运行在hypervisor之上。每个租户的容器实例都被隔离在单独的虚拟机当中,这样就能够实现硬件保护,防止遭遇跨租户袭击。这种方式的缺点也十分明显。不仅更加复杂,而且还会涉及hypervisor代码以及操作系统拷贝等授权问题,并且影响性能,甚至是失去敏捷性——但是至少实例是安全的。

但是现在容器生态系统已经能够应付这种局面。一些Thin hypervisor,比如英特尔的Clear Container,就是被设计用来保护容器并且合理利用硬件——不会占用大量空间或者过度影响系统性能表现。其他一些安全改进——特别是在镜像证明和认证方面——意味着容器已经能够弥补和hypervisor在安全性方面的差距了。

Hypervisor如何回应

Hypervisor开发者也并不清闲。尽管最初他们否认容器会对其带来威胁,但是最终还是开始应对容器技术所带来的各种威胁可能性。比如,VMware使用内存页面去重复化技术来降低内存使用量,这种技术能够替换整个内存页面,将所有重复内容都指向同一个内存地址。这种方式能够有效降低负载,但是hypervisor的运行速度依然无法和容器相提并论。在运营过程中还可以通过其他方式来实现平衡。内存页面去重复化技术能够进一步演变,比如针对已经加载的镜像创建索引,针对已经在系统当中的文件进行检查。这种方式不会带来任何额外负载,能够大幅度提升去重复化速度。我们想要将现在的hypervisor和未来的容器进行对比,表明hypervisor虚拟化并没有停滞不前。

除了内存和性能问题之外,两种解决方案的应用领域也各不相同。对于那些需要进行大规模扩展、但是几乎不会相互影响——至少不会直接相互影响——的任务来说,使用容器更加合适。比如,容器技术能够很好地满足Web服务以及微服务的需求,如果能够对容器进行恰当配置,那么其还能够在云中发挥重要作用。

相比于容器,hypervisor更加适用于那些规模庞大的独立应用,管理员能够更好地控制和应用相关的网络和存储架构,由于这些大型应用通常都被用来执行一些关键任务,因此节约资源和启动时间并不是其主要考虑因素——特别是和潜在的故障时间或者安全隐患相比。

科学计算,几年之前刚刚进入虚拟化领域,已经在很大程度上提升了生产力。这些工具通常都会根据当前环境进行调整,因此更加适合于复杂任务。

至于成本因素,应用和操作系统授权方式还需要进行不断调整,这样才能使得所有用户都能够负担的起虚拟化的价格,不论选择使用哪种虚拟化方式。每个实例每分钟的收费方式也许将会成为最终标准。

凭借现有的强大生态系统以及庞大的用户群体,hypervisor还将会在IT领域发挥重要作用。在容器和hypervisor的竞争当中,只有当hypervisor设计者不再进行回应的的时候,容器才有可能成为最终的胜利者,但是这几乎是不可能的。事实上,未来最有可能的发展方向就是hypervisor和容器技术相互融合,至少在特性和优势方面。那些现在已经非常依赖于hypervisor基础架构的IT部门也许希望继续使用这种方式,比如使用简化的hypervisor实例或者在hypervisor实例当中使用容器。另一方面,全新安装的企业最有可能会直接使用Docker或者其他方案。对应用进行分类也是一种可行方案,hypervisor虚拟化更加适用于庞大的单一应用。

收起
保险 · 2018-02-05
浏览1765
weiliang1216weiliang1216it技术咨询顾问IBM
优点上:首先容器更小(M),虚拟机比较大,同时需要对硬件仿真其次容器性能比虚拟机好,容器可以在几秒钟内启动并重新启动。虚拟机一般要几分钟。此外虚拟机管理程序和客户机操作系统不需要额外的开销,使容器消耗更少的CPU和内存.最后管理成本上,每台虚拟机需要一个完整的功能操作系...显示全部

优点上:
首先容器更小(M),虚拟机比较大,同时需要对硬件仿真
其次容器性能比虚拟机好,容器可以在几秒钟内启动并重新启动。虚拟机一般要几分钟。
此外虚拟机管理程序和客户机操作系统不需要额外的开销,使容器消耗更少的CPU和内存.
最后管理成本上,每台虚拟机需要一个完整的功能操作系统,然后进行额外的管理;而容器和母系统共用才做系统,因此额外开销少。
缺点上:
容器隔离性不如虚拟机,比较底层是共用的
其次,无法对硬件仿真,一些和硬件有耦合的产品不能用
再然后,由于无法访问硬件,在数据读写上也需要用通道(Plugin实现)

收起
IT咨询服务 · 2018-02-05
浏览1690

提问者

li5227205
系统工程师新云东方
擅长领域: 存储灾备软件定义存储

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2018-02-05
  • 关注会员:3 人
  • 问题浏览:4384
  • 最近回答:2018-02-05
  • X社区推广