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

Ian*_*ton 6 docker kubernetes dockerfile docker-image docker-container

我的理解是Docker在dockerfile的每个阶段都创建了一个图像层.

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

有没有一点可以解决,或者对于dockerfile中的每一层都是如此?

这是如何运作的?

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

Mat*_*att 8

Dockers 了解大部分图像,容器和存储驱动程序的详细信息.

从Docker 1.10开始,组成图像的所有图层在构建时都具有与它们相关联的SHA256安全内容哈希.只要图层的内容相同,此哈希在主机和构建中是一致的.

如果任意数量的图像共享一个图层,则该图层的1个副本将被存储并由该Docker引擎实例上的所有图像使用.

debian随着新版本的推出,类似的标签可以引用多个SHA256图像哈希值.FROM debian仅当SHA256哈希匹配时,使用构建的两个图像不一定共享图层.

下面运行Docker Engine的任何东西都将使用此存储设置.

此共享也适用于Docker Registry(> 2.2以获得最佳结果).如果要使用该注册表中已存在的图层推送图像,则会跳过现有图层.将图层拉到本地引擎也是如此.