linux – 在VM中运行docker容器与在裸机上运行docker容器有什么好处?

在VM中运行docker容器与在裸机上运行docker容器(直接在主机上)有什么好处?

我听说公司在VM中运行docker容器,特别是在docker会议中已经提到某些组织正在这样做.为什么?

(比较在主机上运行的Docker容器与在主机上的KVM内运行的Docker容器)

> Docker和KVM都有办法保存他们当前的状态,这里没有额外的好处
> Docker和KVM都可以提供单独的IP供网络使用
> Docker和KVM都将运行程序和安装与主机运行进程冲突分开
> Docker和KVM都提供了随企业发展而扩展的简便方法
> Both提供将实例移动到不同主机的简单方法

那么为什么有人会在KVM中运行Docker?难道他们不会从KVM中受到不必要的性能打击吗?

最佳答案
关于你的要点:

Docker和KVM都有办法保存他们当前的状态,这里没有额外的好处

除了它们如何存储它们的状态是不同的,一种方法或另一种方法可能更有效.此外,您无法可靠地保存100%的容器状态.

Docker和KVM都可以提供单独的IP以供网络使用

根据您使用的VM和容器系统,这可能更容易设置VM而不是容器.如果您需要VM /容器的专用第2层接口,尤其如此,使用VM几乎总是更容易.

Docker和KVM都将运行程序和安装与主机运行进程冲突分开

VM比集装箱做得更好.容器仍在对主机操作系统进行本机系统调用.这意味着他们可以直接利用这些系统调用中的任何错误. VM有自己的操作系统,所以它们更好地隔离.

Docker和KVM都提供了随企业发展而扩展的简便方法

这是关于平均的,尽管我个人发现VM的完成比正确的容器更好(很可能是因为VM正确地将权限问题卸载到硬件上,而容器需要软件来处理它).

两者都提供将实例移动到不同主机的简单方法

不,不完全是.两者都可以进行脱机迁移,但是许多容器系统无法进行实时迁移(即,将正在运行的容器从一个主机移动到另一个主机).如果您以任何合理的规模运行,实时迁移对于可管理性非常重要(需要在主机上运行更新?将所有内容迁移到另一个系统,重新启动主机,将第二台主机上的所有内容迁移到第一台主机,重新启动,重新平衡).

一些额外的要点:

> VM通常更容易使用高可用性选项.这并不是说容器没有这样的选项,只是它们通常更容易使用并使应用程序代码适应VM.
> VM更容易直接迁移到云托管和从云托管迁移(您不必非常关心底层托管环境是什么样的).
> VM允许您从主机操作系统运行不同的平台.甚至不同的Linux发行版在其内核配置方面也存在足够的差异,因为为一个发行版编写的内容并不能完全保证在另一个上运
> VM可以让您更好地控制潜在的攻击面.使用容器,您无法摆脱主机操作系统的代码仍在内存中的事实,因此也是潜在的攻击媒介.使用VM,您运行的是一个独立的操作系统,因此您可以将其降低到实际需要的绝对最小值.
>在VM中一起运行一组相关容器,为您提供了一种简单易用的方法来启动和停止该组容器.

转载注明原文:linux – 在VM中运行docker容器与在裸机上运行docker容器有什么好处? - 代码日志