本书未发布

2.2. Docker 与虚拟机有何区别?

未匹配的标注

虚拟化管理系统

虚拟化管理系统,也称为虚拟机管理器(Virtual Machine Manager 缩写为 VMM )可以实现虚拟化(在一台物理计算机上运行多个操作系统)。它允许主机在VM之间共享其资源。

有两种类型的虚拟机管理程序:

类型1,也称为“裸机虚拟机管理程序”

此软件安装在底层计算机硬件之上(因此,在这种情况下,没有主机操作系统,只有来宾操作系统)。您可以在一台计算机上运行许多的虚拟机

与类型2管理程序不同,类型1管理程序有自己的设备驱动程序并与硬件直接交互。这使得它们更快、更简单、更稳定。

类型2,也称为“托管虚拟机管理程序”

这是安装在操作系统上的程序。您可能更熟悉它,如 VirtualBox 或 VMware Workstation。这种类型的虚拟机管理程序类似于"翻译器",将来宾操作系统的系统调用转换为主机操作系统的系统调用。

系统调用(syscall)是程序从内核请求服务的方式,记得内核是干什么的吗?它管理底层硬件。

例如,在您的程序中,假设您要将一个文件的内容复制到另一个文件中。很直截了当,对吧?为此,您需要从硬盘的一个部分中提取一些字节,并将它们放入另一个部分。因此,基本上,您正在使用物理资源(本例中是硬盘)进行操作,您需要启动一个系统调用来执行此操作。当然,在所有的编程语言中,这都是对你的抽象,但你明白这一点。

因为所有操作系统内核,尽管以不同的方式实现,但做同样的工作(控制硬件),我们只需要一个程序来“转换”客户操作系统的系统调用来控制硬件。

托管虚拟机管理程序的一个优点是,在这种情况下,我们不必担心底层硬件及其驱动程序。我们真的只需要将作业委派给主机操作系统,它将为我们管理这些内容。缺点是它会产生资源开销,并且多个层叠在一起会使事情变得复杂并降低性能。

容器

虚拟机不是唯一的虚拟化技术。对于虚拟机,我们拥有完整的功能完善的虚拟机,并拥有自己的专用内核。我们为其分配RAM,为其分配内存,并且与之交互,就好像它是一台独立的计算机一样。

这有几个问题。首先,也是最明显的是资源管理效率低下。一旦你为VM分配了一些资源,只要它正在运行,它就会占用这些资源。

例如:如果你为VM分配4 GB的内存和40 GB的磁盘容量,一旦你运行它,只要该VM正在运行,这些资源就将不可用。在某个时刻,它可能只需要1 GB的内存,并且您可能缺少内存用于另一个VM或主机上的其他进程。但是由于它已经分配了这个数量的内存,所以它只会闲置在那里。

另一个问题是启动时间。因为VM有自己的内核,所以如果您需要重新启动计算机,它将需要启动整个内核。当计算机重新启动时,您在VM中运行的服务将不可用

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/docker/20.x/doc...

译文地址:https://learnku.com/docs/docker/20.x/doc...

上一篇 下一篇
Summer
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~