Docker和其他容器服务如何与KVM不同?

看这个问题及其答案 ,很明显有几点使得容器服务与传统的虚拟机有着很大的不同:

  • 他们可以通过共享主机的操作系统来节省性能和空间

  • 他们使用AuFS文件系统进一步节省了空间,这使得他们可以与主机共享硬盘

所有这些都可以让他们在一个完整虚拟机所花费的时间的一小部分时间内启动。

我可能会对KVM如何工作和pipe理程序模型有一些误解,但是不像KVM那样容器? 他们有什么不同,他们两人的performance收益/损失有哪些?

我可能会对KVM如何工作和pipe理程序模型有一些误解,但是不像KVM那样容器? 他们有什么不同,他们两人的performance收益/损失有哪些?

虚拟机就是这样 – “虚拟”硬件,可以启动几乎任何兼容的操作系统。 例如,您可以在Linux主机的虚拟机上运行Windows。 虚拟机提供了各种模拟硬件,包括CPU,网卡,存储接口等等。

相比之下,容器只不过是主机上的一个进程集合。 在容器中运行的进程与在容器外部运行的进程没有区别 – 从主机可以看到它们,使用kill等工具来pipe理它们。正因为如此,在容器中运行的进程正在使用主机内核 -例如,你不能在你的Linux主机的容器中运行一个Windows二进制文件。

由于他们没有执行任何types的硬件虚拟化,所以容器的重量要比虚拟机轻得多。 只要你能够使用自己的限制(即限制在主机操作系统内核的事实),他们将比在虚拟机中运行相同的服务产生更好的硬件利用率。