虚拟机主要是什么原理?

docker容器与虚拟机有什么区别?

很高兴为您解答。

静乐网站建设公司成都创新互联,静乐网站设计制作,有大型网站制作公司丰富经验。已为静乐成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的静乐做网站的公司定做!

Docker悄无声息的来到我们身边,正在改变我们的开发、测试、部署应用的方式,那么,到底Docker和虚拟机VM有什么区别,我们通过一个图,再配上简明扼要的文字就很容易理解两者之间的区别。

首先要明确:Docker是一个开源的应用容器引擎,而VM是一个完整的操作系统。

1、使用VM运行多个相互隔离的应用

解释:

可以看到,APP #1、APP #2、APP #3如果要独立运行,相互隔离,则需要安装三个操作系统。如果一个虚拟操作系统按1G算,总共需要占3G的存储空间,更槽糕的是,光运行这三个操作系统就要耗费很大的内存和CPU。

2、使用Docker运行多个相互隔离的应用

DOCKER DAEMON:Docker守护进程,负责管理Docker容器。

从计算机软件层级来看,docker和虚拟机的区别在于虚拟的软件层级不一样。虚拟机基于同一个硬件,模拟出不同的操作系统;而docker基于同一个操作系统,模拟出不同的运行时环境。我们依次来看:

1. 先看看计算机的软件层次,从下到上依次为:操作系统内核、文件系统(运行时环境)、上层APP。

2. 虚拟机运行在同一个硬件上,可以虚拟出不同的操作系统。比如vmware可以在一台pc上既模拟出一个windows系统,同时也可以模拟出一台linux系统。借助虚拟机,两个不同的操作系统可以同时运行在同一个硬件之上。

3. 而docker则运行在同一个操作系统内核上,虚拟出不同的文件系统或者也可以叫做运行时环境。不同的运行时环境,其对应的文件系统也是不同的。比如java的运行时环境就要求文件系统里存在jdk,而golang的运行时环境则需要有go相关的底层库。在docker上既可以虚拟出一个java的运行时环境,也可以虚拟出go的运行时环境。甚至,基于docker,你既可以虚拟出一个java-1.6的运行时候环境,也可以虚拟出一个java-1.8的运行时环境,而这两个运行时环境可以同时运行在同一个操作系统之上


以上就是虚拟机和docker的区别,更多容器云平台原创内容可关注我!

最近刚好看了一部分docker的东西
先上图,vm与docker框架,直观上来讲vm多了一层guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低也是比较容易理解的

其次,openstack能够以10台/min的速度创建虚拟机,在docker面前就弱爆了,因为docker是利用宿主机的系统内核,所以可以做到在几秒钟之内创建大量容器,它们的启动速度是在数量级上的差距

最后找了一个IBM测试案例,关于计算能力的,对于kvm为什么会有这么大的性能损失,一方面是因为虚拟机增加了一层虚拟硬件层,运行在虚拟机上的应用程序在进行数值计算时是运行在Hypervisor虚拟的CPU上的;另外一方面是由于计算程序本身的特性导致的差异。虚拟机虚拟的cpu架构不同于实际cpu架构,数值计算程序一般针对特定的cpu架构有一定的优化措施,虚拟化使这些措施作废,甚至起到反效果。比如对于本次实验的平台,实际的CPU架构是2块物理CPU,每块CPU拥有16个核,共32个核,采用的是NUMA架构;而虚拟机则将CPU虚拟化成一块拥有32个核的CPU。这就导致了计算程序在进行计算时无法根据实际的CPU架构进行优化,大大减低了计算效率。

docker是虚拟化软件运行环境。

虚拟机是虚拟化硬件。

层次不同。

虚拟机更消耗资源。但带来的是一个完整的可以不同于宿主机的操作系统。因为和宿主机操作系统不共享任何东西(包括硬件,内核,动态库,环境变量等),它的隔离性更好。

docker更轻量级,共享使用宿主机的硬件和内核,资源占用更少。它在宿主机内核基础上虚拟化了一个不同于宿主机的软件运行环境,比如动态库,环境变量等。可以说,docker和宿主机之间除了内核共享,其它都可以不同。

虚拟机主要是什么原理?

要回答这个问题,首先看为什么一个OS无法直接与另外的OS共存。答案很简单,OS作为硬件上第一层软件,认为自己拥有全部的硬件的访问和控制权,且自己是唯一的控制者。在这种情况下,如果两个OS共存,必然产生问题。

OS主要负责管理的是CPU和内存,以及众多的IO设备。于是我们可以分别讨论。hypervisor是实现虚拟化的关键,它会以一个内核态的驱动存在。

CPU的虚拟化:

背景知识:x86 CPU有一项权限机制,把CPU的状态置于RING 0到RING 3分别使CPU具有最高的权限到最低的权限。以Linux为例,内核运行于RING 0上,而其余全部用户进程运行于RING 3上(Xen比较奇葩,Linux在Xen下面会运行于RING 1)。在用户权限下,所有的IO设备是不可操作的,另外,有些控制寄存寄是无法访问的,一些privilege的指令是不能运行的。因此一个用户进程要想读写文件,进行一些操作,就要依赖于内核。系统调用能够使CPU运行于RING 0,并执行内核代码(具体方法见一些操作系统教程)。

背景说完。一个CPU的全部状态其实就是所有寄存器的值,只要保证任何操作之后寄存寄的值在OS看来是正确的,guest OS就可以正常执行。hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。

那么考虑虚拟化一个CPU,在虚拟化的guest OS里面,CPU无论如何也不可能运行于RING 0,因为这样的话,host OS必然会crash掉。因此,当一个guest OS想要进入到RING 0执行内核代码时,hypervisor会向guest OS说谎,并告诉它,你已经在RING 0上了,而实际上,所有的指令还是在RING 3上。当guest OS访问到任何privilege的东西时,hypervisor会接到fault,此时hypervisor会判断这个指令是什么,并修改相应的虚拟寄存器的状态,然后返回。这样guest OS就可以正常的运行。需要指出的是,在大多数的指令下代码是直接跑在硬件上的,而不需要软件介入。只有在一些权限高的请求下,软件会介入,并维护虚拟的CPU状态。

虚拟机是一种软件程序,它可以在计算机上模拟另一个计算机系统的行为。它的原理是通过在主机操作系统上运行虚拟机软件,该软件可以模拟出一个完整的计算机系统,包括处理器、内存、硬盘、网络接口等组件。虚拟机可以运行不同的操作系统和应用程序,使得用户可以在同一台计算机上同时运行多个不同的操作系统和应用程序,从而提高计算机资源的利用率和灵活性

我写了一个小项目桃花源(英文名为 peach),该项目是一个迷你虚拟机,用于学习 Intel 硬件虚拟化技术。学习该项目可使读者对 CPU 虚拟化、内存虚拟化技术有个感性、直观的认识,为学习 KVM 打下坚实的基础。peach 实现了如下功能:

  • 使用Intel VT-x技术实现CPU虚拟化
  • 使用EPT技术实现内存虚拟化
  • 支持虚拟x86实模式运行环境
  • 支持虚拟CPUID指令
  • 支持虚拟HLT指令,Guest利用HLT指令关机

代码仓库如下:

https://gitee.com/pandengyang/peach.git

https://github.com/pandengyang/peach.git

题主问的虚拟机概念很泛,不过一般说的是vnware那种模拟电脑硬件的软件。

首先,先来讲讲虚拟机的大致原理,即CPU的虚拟化技术;举个例子,比如一台电脑,在没有装win系统的时候,本质上就是由一系列硬件组成的机器,我们称其为裸机。

而vnware虚拟机就是在原有的电脑系统上开辟出一台新的裸机,用户可以在新的裸机上装新的系统,可以是win,也可以是linux等其他系统,相当于内嵌了一台新的电脑。

其次,vnware虚拟机本质上是软件,模拟电脑硬件的软件,所以一旦开始运行,主机是可以检测到的(但是虚拟机检测不到主机),而且只要能让主机和虚拟机ping通的话,还可以保持两者的网络联系,当然,这个需要看网卡质量。

在实际使用上就是主机界面开一个终端窗口来操作虚拟机。此外,磁盘空间足够大的话可以装多台虚拟机,相当于有多台电脑的体验,甚至每台虚拟机的内存和磁盘容量都可以自己定义。而且一旦将虚拟机文件备份好,未来虚拟机发生损坏,用此文件就可以轻易覆盖恢复。

最后,之所以越来越多开发者青睐于虚拟机,是因为虚拟机软件本身就包含了各种硬件驱动,也不用担心接口不够,内存不足等问题,内存硬盘网卡USB统统在软件中可设置,完全不必要去购置多台电脑和额外内存磁盘就可以玩转各种操作系统和测试软件,甚至还可以自主搭载一些小型的服务器。

如果到了这里还是不懂的话,那就这么理解吧:

火影忍者里的长门(主机),通过轮回眼的六道之术分化出(虚拟化)6个跟自己同样有轮回眼的佩恩们(6台虚拟机),佩恩们虽然看起来都具有本体(主机)一模一样的能力,但是他们的查克拉(计算机资源)实际上是由长门(主机)分配出去的。

到此,以上就是小编对于日本vpswindow的问题就介绍到这了,希望这2点解答对大家有用。

网站栏目:虚拟机主要是什么原理?
分享地址:http://www.shufengxianlan.com/qtweb/news45/56045.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联