Docker,基本上是容器,支持
操作系统虚拟化
i、 e.你的应用程序觉得它有一个完整的OS实例,而VM支持
硬件虚拟化
.你觉得它是一台物理机器,你可以在其中启动任何操作系统。
在Docker中,运行的容器共享主机OS内核,而在VM中,它们有自己的OS文件。将应用程序部署到各种服务环境(如“测试”或“生产”)时,开发应用程序的环境(操作系统)是相同的。
例如,如果您开发了一个在端口4000上运行的web服务器,当您将其部署到“测试”环境时,该端口已经被其他程序使用,因此它停止工作。容器中有多层;您对操作系统所做的所有更改都将保存在一个或多个层中,这些层将是图像的一部分,因此无论图像走到哪里,依赖关系都会存在。
在下面的示例中,主机有三个虚拟机。为了在虚拟机中提供完全隔离的应用程序,每个虚拟机都有自己的操作系统文件、库和应用程序代码副本,以及一个完整的操作系统内存实例。
而下图显示了容器的相同情况。在这里,容器只是共享主机操作系统,包括内核和库,因此它们不需要启动操作系统、加载库或为这些文件支付私有内存成本。它们占用的唯一增量空间是应用程序在容器中运行所需的任何内存和磁盘空间。虽然应用程序环境感觉像一个专用的操作系统,但应用程序的部署就像它部署到专用主机上一样。容器化应用程序在几秒钟内启动,与VM相比,机器上可以容纳更多的应用程序实例。
资料来源:
https://azure.microsoft.com/en-us/blog/containers-docker-windows-and-trends/