docker中图层和图像有什么区别?

我知道一个图像由许多层组成。 例如,如果你运行“docker history [Image]”,你可以得到一系列的ID,顶部的ID和图像ID相同,其余的ID是图层ID。

在这种情况下,这些rest层ID是否对应于其他一些图像? 如果这是真的,我可以查看图层作为图像?

层是为Docker镜像和Docker容器组成的文件系统。

这是感谢图层,当你拉一个图像 ,你最终不必下载所有的文件系统。 如果您已经有另一个图像,包含您拉取的图像的某些图层,则只会实际下载缺less的图层。

这些rest层ID是否对应于其他一些图像?

是的,它们就像图像一样,但没有任何标签来标识它们。

我可以将图层视为图像吗?


展示案例

docker pull busybox docker history busybox 
 IMAGE CREATED CREATED BY SIZE COMMENT d7057cb02084 39 hours ago /bin/sh -c #(nop) CMD ["sh"] 0 B cfa753dfea5e 39 hours ago /bin/sh -c #(nop) ADD file:6cccb5f0a3b3947116 1.096 MB 

现在从图层cfa753dfea5e创build一个新的容器,就好像它是一个图像:

 docker run -it cfa753dfea5e sh -c "ls /" 
 bin dev etc home proc root sys tmp usr var 

从docker文件:

Docker镜像是一个只读模板。 例如,图像可能包含安装了Apache和您的Web应用程序的Ubuntu操作系统。 图像用于创buildDocker容器。 Docker提供了一个简单的方法来构build新的图像或更新现有的图像,或者您可以下载其他人已经创build的Docker镜像。 Docker镜像是Docker的构build组件。 每个图像由一系列图层组成。 Docker使用联合文件系统将这些图层合并为一个图像。 联盟文件系统允许单独的文件系统(称为分支)的文件和目录被透明地覆盖,形成一个统一的文件系统。

Docker轻量级的原因之一是因为这些层。 当您更改Docker镜像时(例如,将应用程序更新为新版本),将会构build一个新的图层。 因此,与使用虚拟机一样,不是replace整个映像或完全重build,而只是添加或更新该层。 现在,您不需要分发全新的映像,只需更新即可,从而更快,更简单地分发Docker映像。

我喜欢看这些东西的方式就像备份types。 我们可以创build完整备份,然后创build增量备份。 完全备份不会被改变(尽pipe在一些系统中减less每次增量备份之后的恢复时间,但完整备份被改变以包含改变,但是对于这个讨论,我们可以忽略这种情况),只是以单独的方式备份改变。 所以我们可以有不同的备份层,就像我们有不同的图像层一样。

编辑:查看以下链接了解更多信息:

Docker镜像vs容器

find每个Docker镜像的图层和图层大小