VMwareWorkstation来部署诸如Windows、Linux各个版本的虚拟机
对于大多数人而言接触最多的当属虚拟机,相信现在很多人的电脑上都还安装有VMwareWorkstation来部署诸如Windows、Linux各个版本的虚拟机。
那么什么是虚拟机呢?
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
虚拟机的运行离不开Hypervisor,Hypervisor是运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。通常也叫做Virtual Machine Monitor。
我们从上图可以看出服务器硬件、Hypervisor、VM之间的关系,每个VM都有一个完整的操作系统,虚拟机内部署的应用可以使用整个操作系统的资源。
虚拟机的出现,虽然解决了早期在物理服务器上部署应用而无法为物理服务器中的应用程序定义资源边界导致资源分配问题,但是仍然会有大量额外的计算资源浪费,硬件资源需要能够支持这些独立的虚拟机操作系统的运行。
慢慢的就有了容器技术的诞生。
那么什么是容器呢?
容器技术可以理解为操作系统虚拟化技术,它是一种轻量级的,没有类似虚拟机的VMM层,而是通过内核创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程(容器),不同的实例相互隔离,相互之间完全无感知。可以简单地理解为容器就是一个进程沙盒,来提供进程级的隔离。
从上图我们可以清楚的看到传统物理服务器到虚拟机,再到容器技术的演进,容器相比于VM,容器没有自己的操作系统,而是通过容器引擎来实现共享宿主机操作系统内核,从而减少需要运行多个操作系统的开销。
容器是一个标准的软件单元,它将应用部署所需的代码和依赖项打包为镜像,可以快速可靠地从一个计算环境运行到另一个环境。
需要注意的是提到容器,大家很容易联想到Docker,然而Docker并不等于容器,Docker是基于GO语言的开源容器项目,它提供工具和平台来管理容器的生命周期,也就是我们所说的容器引擎。
总的来说,容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不是硬件,因此容器更加轻便高效。容器和虚拟机一起使用,为部署和管理应用提供了极大的灵活性。