我们之前提到过,虚拟化技术在广义上也可以被视为一种形式,但与传统的虚拟化技术有所不同。它更适合被理解为一种容器技术,类似于我们Door标志上的集装箱。下面我们来比较一下传统虚拟机和Docker之间的区别。
首先,我们看一下传统虚拟机。在传统虚拟机中,服务器可以被理解为本机的某些硬件配置,然后上面运行着主机操作系统,例如我们现在使用的Windows 10操作系统。接着是Hypervisor软件,它实际上是一种虚拟化软件,就像我们通常理解的VMware或VirtualBox。然后,我们在虚拟机中安装了客户操作系统(Guest OS),例如在Windows上安装了Ubuntu Linux。在Guest OS中,我们可以再安装各种应用程序、工具等。

传统虚拟机中,Guest OS和Host OS是完全隔离的。在Guest OS中安装的应用程序只能在Guest OS内部运行,不能在Host OS中运行。
现在让我们来看一下Docker。同样,Docker也是从一个服务器开始,这个服务器就是本机的硬件配置。然后是Host OS,也就是我们的本地操作系统,例如Windows。在Host OS之上是Docker引擎,它是Docker的核心组件。

与传统虚拟机不同的是,Docker使用的是容器化技术,而不是完整的虚拟化。在Docker中,不再需要一个完整的Guest OS,而是使用容器来运行应用程序。容器是一种轻量级的虚拟化技术,它使应用程序可以在隔离的环境中运行,但与Host OS共享内核。这就是传统虚拟机和Docker之间的区别,它们在虚拟化技术的实现方式上有所不同。然后是我们的二进制文件以及一些应用程序。与传统虚拟机相比,有几个关键的区别。
首先,传统虚拟机依赖虚拟化软件(如VMware或VirtualBox),而Docker使用的是一个多核引擎。其次,传统虚拟机需要在其中安装一个完整的Guest OS,而Docker则不需要这样一个操作系统的完整镜像。传统虚拟机中的操作系统是真实的,可以在其他设备上运行,而Docker中的应用程序是通过多核引擎调用本地操作系统内核来运行的,但又能够被隔离。

在启动方面,容器的启动速度比传统虚拟机要快得多。因为容器只包含应用程序,例如如果我们想要安装MySQL,它大约只需要几百兆字节的空间。而传统虚拟机需要先安装一个完整的操作系统,然后再安装应用程序,这就需要更多的资源和时间。
另一个区别是硬盘的使用。在传统虚拟机中,需要为Guest OS和应用程序分配一定的磁盘空间,通常以GB为单位。而在Docker中,应用程序可以直接在主机的文件系统上运行,只需要几百兆字节的空间。Docker相比传统虚拟机具有更快的启动速度和更高的资源利用率,因为它不需要额外的操作系统来运行应用程序。
然后在虚拟机启动完操作系统后,启动MySQL肯定需要一些时间,通常是分钟级别的。而在容器中,启动MySQL可以达到秒级的速度,因为它不需要额外的虚拟操作系统来运行。
性能方面,容器更接近于原生环境,因为它们直接调用主机操作系统的内核,并通过多核引擎进行隔离。而虚拟机通常会占用更多的资源,因为它们是完全虚拟化的,运行在虚拟化的硬件上。
容器系统的支持量也更大,一个单机可以支持上千个容器,而虚拟机则通常只能支持几十个。例如,如果一个虚拟机硬盘有20GB的空间,而每个MySQL实例只需要200MB,那么一个虚拟机可能只能装上几个MySQL实例,而使用容器则可以轻松容纳成百上千个实例。综上所述,容器和虚拟机在性能、启动速度和系统支持量等方面有着明显的区别。
上一条:Docker组件
下一条:Docker简介