Docker 1.10引入了一个新的content adressable storage model。现在,层ID被创建为其内容的哈希。这样就可以重复使用具有相同内容的图层。
这听起来不错,但为什么现在这个ID隐藏起来呢?我已经完成了一些简单的测试,以确定是否真的重复使用了图层。例如,我尝试使用相同的来源但使用不同的标签进行一些自动构建。
我最终还是会得到不同的图像ID。如果我查看docker history
,我只会获得<missing>
图片ID:
IMAGE CREATED CREATED BY SIZE COMMENT
7b007b10103a 15 minutes ago /bin/sh -c #(nop) COPY file:4c2cb4c2780edc6e2 37.77 kB
<missing> 15 minutes ago /bin/sh -c #(nop) COPY file:ac11867f64e4fdd4e 856 B
<missing> 15 minutes ago /bin/sh -c #(nop) ENV PATH=/usr/local/sbin:/u 0 B
<missing> 15 minutes ago /bin/sh -c #(nop) MAINTAINER haertl.mike@gmai 0 B
为什么现在隐藏这些信息?为什么具有相同内容的图像仍然具有不同的图像ID?
编辑:在docker文档中甚至还有关于此的说明。但这并没有解释为什么这个决定已经做出。 IMO它从docker图像中消除了很多透明度,使得分析/调试变得更加困难。来自docs:
注意:在Docker 1.10引入的内容可寻址存储模型下,图像历史数据不再存储在每个图像层的配置文件中。它现在作为一串文本存储在与整个图像相关的单个配置文件中。这可能导致某些图像层在docker history命令的输出中显示为“missing”。这是正常行为,可以忽略。
您可能会听到这些图像称为平面图像。