docker与虚拟机性能比较

 docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。本文将主要根据IBM发表的研究报告,论述docker与传统虚拟化方式的不同之处,并比较物理机、docker容器、虚拟机三者的性能差异及差异产生的原理。
    虚拟机实现资源隔离的方法是利用独立的OS,并利用Hypervisor虚拟化CPU、内存、IO设备等实现的。例如,为了虚拟CPU,Hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。需要指出的是在大多数情况下,虚拟机软件代码是直接跑在硬件上的,而不需要Hypervisor介入。只有在一些权限高的请求下,Guest OS需要运行内核态修改CPU的寄存器数据,Hypervisor会介入,修改并维护虚拟的CPU状态。
     Hypervisor虚拟化内存的方法是创建一个shadow page table。正常的情况下,一个page table可以用来实现从虚拟内存到物理内存的翻译。在虚拟化的情况下,由于所谓的物理内存仍然是虚拟的,因此shadow page table就要做到:虚拟内存->虚拟的物理内存->真正的物理内存。
     对于IO设备虚拟化,当Hypervisor接到page fault,并发现实际上虚拟的物理内存地址对应的是一个I/O设备,Hypervisor就用软件模拟这个设备的工作情况,并返回。比如当CPU想要写磁盘时,Hypervisor就把相应的数据写到一个host OS的文件上,这个文件实际上就模拟了虚拟的磁盘。
    对比虚拟机实现资源和环境隔离的方案,docker就显得简练很多。docker Engine可以简单看成对Linux的NameSpace、Cgroup、镜像管理文件系统操作的封装。docker并没有和虚拟机一样利用一个完全独立的Gue

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
虚拟机Docker是两种常见的虚拟化技术,它们在性能方面有一些区别。 首先,虚拟机是通过在物理服务器上模拟多个独立的操作系统实例来实现虚拟化。每个虚拟机都有自己的操作系统和内核,它们之间是完全隔离的。由于每个虚拟机需要独立的操作系统,虚拟机的启动时间和资源消耗相对较高,占用的硬盘空间也较大。但是,虚拟机可以提供更高的隔离性和安全性,并且允许不同操作系统的应用程序运行在同一台服务器上。 相比之下,Docker是一种容器化技术,它利用操作系统级别的虚拟化来实现容器的隔离。Docker容器与宿主操作系统共享内核和操作系统,并且每个Docker容器只包含运行所需的应用程序和依赖,因此它们相对轻量级且启动速度快。容器技术还支持快速扩展和部署,使得应用程序的可移植性更强。 在性能方面,虚拟机存在一定的虚拟化开销,如内存和处理器的额外管理开销,这可能会导致性能略为降低。而Docker容器在性能方面通常更高,因为它们直接运行在宿主操作系统上,不需要额外的操作系统虚拟化。同时,由于容器共享宿主操作系统和内核,容器的资源消耗也更低,可以更高效地利用服务器资源。 然而,性能的好坏还取决于具体的使用场景和配置。在一些需要强隔离性和安全性的场景下,虚拟机可能更适合。而对于需要快速部署和扩展的应用程序,或者要求更高的性能的场景,Docker可能更为合适。 总结来说,虚拟机Docker性能方面有一些区别,虚拟机通常会有更高的虚拟化开销,而Docker容器通常具有更高的性能和资源利用效率。具体选择哪种虚拟化技术应基于具体需求,找到更适合自己应用场景的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值