科技云报道:容器与虚拟机之争?不存在的

科技云报道原创 。
Hypervisor技术从一开始就是云计算的基石之一 。 然而 , 近年来容器技术的爆发 , 让这种虚拟化技术开始被认为是传统方法 。 有不少人认为 , 容器的普及对虚拟机形成了冲击 , 于是就有了早些年的容器与虚拟机之争 。
科技云报道:容器与虚拟机之争?不存在的文章插图
经过几年的技术发展和大规模实践 , 虽然许多企业正在将基于虚拟机的应用程序迁移到容器 , 但事实上虚拟机在数据中心和公有云中仍然普遍存在 。 一方面 , 容器并没有完全替代虚拟机 , 另一方面虚拟机也在积极支持容器 , 两者共存的情形反而越来越普遍 。
今天就来聊聊虚拟机和容器到底有什么区别 , 为什么两者会走向共存 , 以及将来会走向何方?
科技云报道:容器与虚拟机之争?不存在的文章插图
虚拟机和容器各有优势
虚拟机和容器诞生的初衷 , 都是为了更好的提高资源利用率 , 但两者的区别在于:虚拟机是操作系统级别的资源隔离 , 而容器本质上是进程级的资源隔离 。
虚拟机(Virtual Machine) , 是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统 。 每个虚拟机都有独立的CMOS、硬盘和操作系统 , 可以像使用实体机一样对虚拟机进行操作 。
虚拟机的运行离不开Hypervisor , Hypervisor是运行在基础物理服务器和操作系统之间的中间软件层 , 可允许多个操作系统和应用共享硬件 。
简单来说 , 服务器硬件、Hypervisor、虚拟机之间的关系在于 , 每个虚拟机都有一个完整的操作系统 , 虚拟机内部署的应用可以使用整个操作系统的资源 。
虚拟机的出现 , 解决了早期在物理服务器上部署应用但无法为其应用程序定义资源边界而导致的资源分配问题 。
但是在使用虚拟化一段时间后 , 会发现它存在一些问题 , 例如:虚拟机的系统层会占用比较多物理机的资源 , 需要更进一步提高服务器的资源利用率;当需要迁移虚拟机服务程序时 , 需要迁移整个虚拟机 , 迁移流程复杂 。
为了解决这些问题 , 容器就出现了 。
科技云报道:容器与虚拟机之争?不存在的文章插图
容器技术 , 可以理解为操作系统虚拟化技术 , 它是一种轻量级的虚拟化技术 。 通过内核创建多个虚拟的操作系统实例(内核和库) , 来隔离不同的进程(容器) , 不同的实例相互隔离 , 相互之间完全无感知 。 可以简单地理解为容器就是一个进程沙盒 , 来提供进程级的隔离 。
相比于虚拟机 , 容器没有自己的操作系统 , 而是通过容器引擎来实现共享宿主机操作系统内核 , 从而减少需要运行多个操作系统的开销 。
作为一个标准的软件单元 , 容器将应用部署所需的代码和依赖项打包为镜像 , 可以快速可靠地从一个计算环境运行到另一个环境 。
因此 , 容器最大的优势在于 , 它启动时间很快 , 可以达到秒级 , 而且对资源的利用率很高 , 如:一台主机可以同时运行几千个Docker容器 。 此外 , 它占的空间很小 , 虚拟机一般要几GB到几十GB , 而容器只需要MB级甚至KB级 。
总的来说 , 容器和虚拟机具有相似的资源隔离和分配优势 , 但功能不同 。 容器虚拟化的是操作系统而不是硬件 , 因此容器更加轻便高效 。 但是如果用户需要使用在不同操作系统上运行的不同应用程序 , 虚拟机就能提供可靠的解决方案和更好的安全性 。
因此 , 如今最有效和最常用的策略是 , 拥有一台具有多个虚拟机的物理机 , 每个虚拟机都有多个容器 。 容器和虚拟机一起使用 , 为部署和管理应用提供了极大的灵活性 。
科技云报道:容器与虚拟机之争?不存在的文章插图
虚拟机和K8s相互融合
可以看到 , 容器和虚拟机根本就存在谁取代谁 , 而是相互融合的状态 。 这也带来了新的问题 , 即如何同时管理虚拟机和容器技术 , 成为企业的一个普遍的需求 。
作为虚拟化技术的最主要推手 , VMware很早就做出了反映 。 此前VMware通过在虚拟化平台上外挂PKS(Pivotal与VMware共同推出的一个K8s平台) , 来实现虚机与容器的同时管理 。 但毕竟是外挂 , 其效率和管理方便性上都有不足 。
去年的VMworld大会上 , VMware发布Tanzu 品牌计划 , 宣布在虚拟化技术中原生地提供对容器技术的支持 。 VMware的Tanzu把虚拟机和K8s结合起来 , 对虚拟机和容器以及物理机统一进行管理 , 它能实现跨物理机、虚拟机以及内部数据中心、跨多个云来管理应用 , 从而为工作负载提供一个统一的支撑 。