VM镜像和Docker镜像有什么区别?
这个问题在这里已经有了答案:
这些是我可以列出的Docker和VM映像之间的一些差异:
1. Docker中的快照流程比VM更快
我们通常从基础映像开始,然后进行更改,并使用docker提交这些更改,并创建映像。 此图像仅包含与底座的差异。 当我们想要运行我们的图像时,我们也需要基础,并且使用分层文件系统将我们的图像置于基础之上。 文件系统将不同的层合并在一起,我们得到我们想要的,我们只需要运行它。 由于docker通常建立在来自注册表的现成图像的基础上,因此我们很少必须自己“快照”整个操作系统。 Dockers将操作系统快照到一个通用映像的能力也使得部署在其他Docker主机上更容易。
2.对于Docker,启动时间比虚拟机少
虚拟机通常需要几分钟才能启动,但容器需要几秒钟,有时甚至不到一秒钟。
4. Docker镜像具有更多的可移植性
Docker镜像由图层组成。 当我们拉取或传输图像时,只检索我们尚未进入缓存的图层。 这意味着如果我们使用基于相同基本操作系统的多个图像,则只会创建或检索基础图层一次。 虚拟机映像没有这种灵活性。
5. Docker提供图像版本
我们可以使用docker commit命令。 我们可以指定两个标志: -m
和-a.
-m
标志允许我们指定提交消息,就像我们在版本控制系统上提交一样:
$ sudo docker commit -m "Added json gem" -a "Kate Smith"
0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
6. Docker镜像没有状态
在Docker术语中,只读图层称为图像。 图像永远不会改变。 由于Docker使用Union File System,因此这些进程认为整个文件系统都是可读写的。 但所有更改都会转到最上面的可写入层,并且在下面,只读图像中的原始文件保持不变。 由于图像不会改变,因此图像没有状态。
7.虚拟机是以硬件为中心的,码头容器是以应用程序为中心的
假设我们有一个容量为1GB的图像。 如果我们想要使用一个完整的虚拟机,我们需要有1GB的x个虚拟机数量。 在docker容器中,我们可以共享1GB的大部分内容,如果您有1000个容器,假设它们都运行相同的操作系统映像,那么容器操作系统的容量可能只有1GB多一点。
8.支持的图像格式
Docker镜像:
VM图像:
上一篇: What are the differences between a VM image and a Docker image?
下一篇: What is the difference between running software in a Docker container Vs Real OS