“当前已有100+用户参与分享,共计发放奖励60000+“
在开始讨论虚拟机和容器之前,必须得先说一下虚拟化技术,这是虚拟机和容器技术诞生的前提。上世纪60年代开始,美国的计算机学术界就开始了虚拟技术的萌芽,1959年6月在国际信息处理大会上,克里斯托弗的一篇《计算机分时应用》的论文,被认为是虚拟化技术的最早论述。
1964 年的 IBM M44/44X 项目实现了在同一台主机上模拟出多个 7044 系统,首次使用 VirtualMachine 和 Virtual MachineMonitor 一词,被认为是世界上第一个支持虚拟化的系统。
现在我们普遍认为虚拟化是一种使计算环境独立于物理基础架构的软件,将各种物理资源(CPU、内存、磁盘、网络等)予以抽象、转换,然后呈现出来的一个可供分割并任意组合为一个或多个(虚拟)计算机的配置环境。
对于大多数人而言接触最多的当属虚拟机,相信现在很多人的电脑上都还安装有VMwareWorkstation来部署诸如Windows、Linux各个版本的虚拟机。
那么什么是虚拟机呢?
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
虚拟机的运行离不开Hypervisor,Hypervisor是运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。通常也叫做Virtual Machine Monitor。 我们从上图可以看出服务器硬件、Hypervisor、VM之间的关系,每个VM都有一个完整的操作系统,虚拟机内部署的应用可以使用整个操作系统的资源。
虚拟机的出现,虽然解决了早期在物理服务器上部署应用而无法为物理服务器中的应用程序定义资源边界导致资源分配问题,但是仍然会有大量额外的计算资源浪费,硬件资源需要能够支持这些独立的虚拟机操作系统的运行。
慢慢的就有了容器技术的诞生。
那么什么是容器呢?
容器技术可以理解为操作系统虚拟化技术,它是一种轻量级的,没有类似虚拟机的VMM层,而是通过内核创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程(容器),不同的实例相互隔离,相互之间完全无感知。可以简单地理解为容器就是一个进程沙盒,来提供进程级的隔离。 从上图我们可以清楚的看到传统物理服务器到虚拟机,再到容器技术的演进,容器相比于VM,容器没有自己的操作系统,而是通过容器引擎来实现共享宿主机操作系统内核,从而减少需要运行多个操作系统的开销。
容器是一个标准的软件单元,它将应用部署所需的代码和依赖项打包为镜像,可以快速可靠地从一个计算环境运行到另一个环境。
需要注意的是提到容器,大家很容易联想到Docker,然而Docker并不等于容器,Docker是基于GO语言的开源容器项目,它提供工具和平台来管理容器的生命周期,也就是我们所说的容器引擎。
总的来说,容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不是硬件,因此容器更加轻便高效。容器和虚拟机一起使用,为部署和管理应用提供了极大的灵活性。 ------分割线------ 最后欢迎大家关注我的个人公众号,后面会不定期更新,欢迎大家相互交流: |