在 2021 年的容器时代,云提供商仍然使用虚拟机管理程序来充分利用系统更多可用资源并提供更高的 IT 移动性,因为客户虚拟机独立于主机硬件。
虚拟机管理程序,允许物理服务器操作多个虚拟机作为彼此并排运行的客户机。
容器是操作系统虚拟化的一种形式。
两种系统都可以实现相同的目的,但是容器的效率更高。
你可以说容器没有提供足够的安全性,但是零信任容器这是有可能的。
我仍然想知道为什么云提供商仍然在他们的裸机服务器中使用虚拟机管理程序而不是容器化。
答案1
容器是不是“操作系统虚拟化的一种形式”。容器是在单个操作系统映像中构建多个用户环境的方式。容器和虚拟机永远无法实现相同的目的。容器所基于的技术从未打算取代虚拟机;它是构建比 chroot 更安全的 jail 的方式(它就像“强化版的 chroot”)。
如果您想了解“一种操作系统虚拟化形式”,请了解Xen半虚拟化技术;那是操作系统虚拟化的形式。
有很多任务是无法在容器中完成的,例如,人们经常需要同时运行 Windows 和 Linux 应用程序,只有上帝知道还有什么,而做到这一点的唯一方法就是虚拟化。
然而,有许多任务可以用任何一种方式解决。为什么它们仍然不总是使用容器来解决?
因为人们的思维存在惯性。虚拟机就像计算机一样,我们使用了很长时间,每个人都习惯了。容器则完全不同。
因为 Windows 广泛普及,它没有这样的概念。我甚至可以推测这是因为在真正安全的容器化环境中很难执行许可限制;微软的许可条款一直很模糊,但包含容器可能会让最忠实的支持者也难以忍受。
答案2
尽管容器具有诸多优点,但虚拟化仍然被使用,因为它非常灵活。
例如,您可以在虚拟机客户机上启用嵌套虚拟化。启用此功能后,虚拟机客户机将具有与主机系统相同的虚拟化能力。
通过这样的设置,您可以扩展您的资源占用,而不仅仅是使用仅为容器提供主机系统或反过来托管容器的有限数量的虚拟机。
理论上,每个单独的虚拟机可以创建另外 3-5 个虚拟机,然后可以进行容器化并以更高效的使用方式使用。
答案3
因为有很多用例需要完整的操作系统安装和容器所不具备的持久性。
这是微软推出的,显然是面向 Azure 的,但仍然是一个很好的比较:https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/containers-vs-vm。
答案4
使用容器时,您需要在所有容器中运行相同的操作系统。但人们通常需要运行不同的操作系统。您可能需要在云中同时运行 Linux 和 Windows 系统;此外,您可能需要为无法在较新系统上运行的特定应用程序运行某些特定的旧版本的 Linux 或 Windows。对于云提供商来说,满足不同客户(可能需要多个不同的操作系统)需求的唯一方法是虚拟化。