为什么Docker图层ID现在隐藏在新的存储模型中?

Docker 1.10推出了一个新的内容可寻址存储模型 。 所以现在,层ID被创build为来自其内容的散列。 这样,具有相同内容的图层应该被重用。

这听起来不错,但是为什么现在这个ID是隐藏的? 我已经做了一些简单的testing来发现,如果层真的被重用。 例如,我试图从相同的来源做一些自动构build,但使用不同的标签。

最后我还是会得到不同的图片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文件中有关于此的一个笔记。 但是这并不能解释为什么做出这个决定。 海事组织从docker图像中消除了很多透明度,使得它们更难以分析/debugging。

从他们的文档 :

注意:在Docker 1.10引入的内容寻址存储模型下,图像历史数据不再存储在每个图像层的configuration文件中。 它现在被存储为一个文本string在一个单一的configuration文件,涉及整体图像。 这可能会导致在docker history命令的输出中显示一些图像层为“丢失”。 这是正常的行为,可以忽略。

您可能会听到像这样的图像被称为平面图像。