为什么现在使用新存储模型隐藏了docker图层ID?

时间:2016-02-15 16:35:50

标签: docker

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”。这是正常行为,可以忽略。

     

您可能会听到这些图像称为平面图像。

0 个答案:

没有答案