VM 镜像和 Docker 镜像有啥区别? [复制]

Posted

技术标签:

【中文标题】VM 镜像和 Docker 镜像有啥区别? [复制]【英文标题】:What are the differences between a VM image and a Docker image? [duplicate]VM 镜像和 Docker 镜像有什么区别? [复制] 【发布时间】:2015-05-19 18:09:00 【问题描述】:

Docker 和虚拟机的镜像有什么不同吗? 除了图像格式,我在任何地方都找不到这方面的任何信息。 请注释掉图像大小、实例创建时间、捕获时间等内容。 谢谢!

【问题讨论】:

另见***.com/questions/28080261/… 【参考方案1】:

以下是 docker 和 VM 映像之间的一些区别,我可以列出:

1. Docker 中的快照过程比 VM 更快

我们通常从基础镜像开始,然后进行更改,并使用 docker 提交这些更改,然后它会创建一个镜像。此图像仅包含与基础的差异。当我们想要运行我们的镜像时,我们还需要基础,它使用分层文件系统将我们的镜像分层在基础之上。文件系统将不同的层合并在一起,我们得到我们想要的,我们只需要运行它。由于 docker 通常构建在来自注册表的现成图像之上,我们很少需要自己“快照”整个操作系统。 Docker 将操作系统快照到一个通用映像的这种能力也使得在其他 docker 主机上部署变得容易。

2。 Docker 的启动时间比虚拟机短

虚拟机通常需要几分钟才能启动,但容器需要几秒钟,有时甚至不到一秒钟。

4. Docker 镜像具有更好的可移植性

Docker 镜像由层组成。当我们拉取或传输图像时,只会检索我们尚未缓存的图层。这意味着如果我们使用基于相同基本操作系统的多个图像,则基本层只创建或检索一次。 VM 映像没有这种灵活性。

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 使用联合文件系统,进程认为整个文件系统都是以读写方式挂载的。但是所有的更改都转到最顶层的可写层,而在下面,只读图像中的原始文件没有改变。由于图像不会改变,所以图像没有状态。

7.虚拟机以硬件为中心,Docker 容器以应用为中心

假设我们有一个大小为 1GB 的容器映像。如果我们想使用完整的虚拟机,我们需要 1GB 乘以您想要的虚拟机数量。在 docker 容器中,我们可以共享 1GB 的大部分,如果你有 1000 个容器,我们仍然可能只有 1GB 多一点的空间用于容器操作系统,假设它们都运行相同的操作系统映像。

8.支持的图片格式

Docker 镜像:

裸露。图片没有容器或元数据信封。 ovf。 OVF 容器格式。 阿基。亚马逊内核映像。 阿里。 Amazon ramdisk 映像。 朋友。亚马逊机器映像。

虚拟机映像:

原始。一种非结构化磁盘映像格式;如果你有一个没有 扩展名可能是原始格式 视频。 VHD 磁盘格式,一个 虚拟机监视器使用的通用磁盘格式来自 VMware、Xen、 微软、VirtualBox 等 vmdk。支持的常见磁盘格式 通过许多常见的虚拟机监视器 视频。 VirtualBox 支持 虚拟机监视器和 QEMU 模拟器 异。存档格式 用于光盘的数据内容,例如 CD-ROM。 qcow2。 由QEMU仿真器支持,可以动态扩展 支持写时复制 阿基。亚马逊内核映像。 阿里。亚马逊 虚拟磁盘映像。 朋友。亚马逊机器映像。

【讨论】:

以上是关于VM 镜像和 Docker 镜像有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

docker 镜像的大小和虚拟大小有啥区别?

在 Docker 镜像名称中,Alpine、Jessie、Stretch 和 Buster 有啥区别?

在 Docker 中使用多个基础镜像有啥影响?

centos6.5的iso镜像DVD1和DVD2有啥区别?

mysqlrouter的使用

Docker学习总结(58)——Dockerfile中,ADD和COPY的区别?