为什么Docker对它的下载更加透明?

时间:2016-12-21 01:35:41

标签: docker

当我下载Docker镜像时,它会下载依赖项,但只显示它们的哈希值。为什么它不显示它正在下载的内容?

例如:

➜  ~ docker run ubuntu:16.04
Unable to find image 'ubuntu:16.04' locally
16.04: Pulling from library/ubuntu
b3e1c725a85f: Downloading 40.63 MB/50.22 MB
4daad8bdde31: Download complete
63fe8c0068a8: Download complete
4a70713c436f: Download complete
bd842a2105a8: Download complete

只告诉我它下载b3e1c725a85f等等的重点是什么?

1 个答案:

答案 0 :(得分:1)

在由哈希表示的文件系统层上创建图像。在创建之后,基本图像标记可以指向完全不同的哈希集合,而不会影响由其构建的任何图像。这些图层基于运行命令之类的东西,调用它的标签就像ubuntu:16.04只在图像制作完成后添加。

所以可以做的最好的事情就是说4a70713c436f基于添加一些基于输入文件夹本身的哈希的目录,或者是一个多行运行命令,这两个目录都不是一个体面的UI。结果可能没有标记名称,或者可能有多个标记名称。因此,最简单的解决方案是输出所有场景的通用和不变,一个不变的哈希。

以图形方式改写:

b3e1c725a85f: could be ubuntu:16.04, ubuntu:16, ubuntu:latest, some.other.registry:5000/ubuntu-mirror:16.04
4daad8bdde31: could be completely untagged, just a run command
63fe8c0068a8: could be completely untagged, just a copy file
4a70713c436f: could point to a tagged base image where that tag has since changed
bd842a2105a8: could be created with a docker commit command (eek)