当多个容器在同一主机上运行时,docker是否会重用图像?

我的理解是,Docker在dockerfile的每个阶段创build一个图像层。

如果我在同一台机器上运行X容器(其中X> = 2),并且每个容器都有一个共同的底层图像层(即.debian),那么docker只会保留该机器上的基本映像的一个副本,还是有每个容器多个副本?

有没有这个问题呢,或者是dockerfile中的每一个层都是如此?

这个怎么用?

Kubernetes以任何方式影响这个吗?

Dockers 理解图像,容器和存储驱动程序的大部分细节。

从Docker 1.10开始,构build映像的所有图层在构build时都有一个SHA256安全内容散列。 这个散列在主机和构build中是一致的,只要该层的内容是相同的。

如果任意数量的图像共享一个图层,那么只有该图层的一个副本将被存储在该Docker引擎实例上的所有图像中并被其使用。

debian这样的标签可以随着新版本发布而引用多个SHA256映像哈希。 使用FROM debian构build的两个图像不一定共享图层,只要SHA256哈希匹配。

任何运行下面的Docker Engine的东西都会使用这个存储设置。

这种共享也可以在Docker Registry(> 2.2获得最佳结果)中起作用。 如果您要使用该registry中已有的图层来推送图像,则会跳过现有的图层。 与将图层拉到本地引擎中一样。