如何查看docker图像的树状图?

时间:2015-09-08 09:55:44

标签: docker

我知道docker已经从--tree命令弃用docker images标志。但我找不到任何方便的命令来获得像docker images --tree这样的输出。我找到了dockviz。但它似乎是另一个容器。是否有内置的cli命令可以在不使用dockviz

的情况下查看图像的树状视图

2 个答案:

答案 0 :(得分:62)

2018年11月更新,码头18.09 您现在拥有wagoodman/dive,一个用于探索泊坞窗图像中每个图层的工具

dive

  

要分析Docker图像,只需使用图像标记/ id / digest:

运行潜水
dive <your-image-tag>
     

或者如果您想要构建您的图像,那么请直接进行分析:

dive build -t <some-tag> .

issue 5001提到的当前(2015年9月,docker 1.8)解决方法确实仍然是dockviz

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz images -t

-t仅允许保留在CLI中(无需图形)

2016年9月更新(码头1.10:码头1.11即将发布1.12),一年之后,正如same issue 5001中提到的Michael Härtl所示:

  

自1.10以来,图层ID的工作方式发生了根本性的变化。有关此主题的冗长解释,请参阅#20399。还有#20451,但我不确定,如果nate / dockviz图像可以使用它。

     

就个人而言,我发现新图层的工作方式非常混乱,而且比以前更不透明。它也没有很好的记录。
  AFAIK @tonistiigi's comments in the issue above是唯一可用的公开解释。

Tõnis Tiigi

  

Pre v1.10没有层的概念或者另一种思考方式是每个图像只有一层。你建立了一系列图像,你推拉链条。链中的所有这些图像都有自己的配置。

     

现在有一个层的概念是内容可寻址的文件系统差异。每个图像配置都有一个图层引用数组,它们构成了图像的根文件系统,没有任何图像需要从父文件中运行任何内容。推拉仅移动单个图像,父图像仅为本地构建生成以用于缓存。

     

如果使用Dockerfile构建映像,则每个命令都会将历史记录项添加到映像配置中。这存储为命令,因此您可以在docker历史记录中查看它。由于这是图像配置的一部分,它也可以通过推/拉移动,并包含在校验和验证中。

     

以下是内容可寻址配置的一些示例:
  https://gist.github.com/tonistiigi/6447977af6a5c38bbed8

     

v1.10中的术语:(这些术语实际上没有改变,但以前我们的文档可能简化了一些事情。)

     
      
  • 图层是文件系统差异。一堆堆叠在一起的文件组成了一个根文件系统。图层由图形驱动程序管理,它们对图像一无所知。
  •   
  • 图像是您可以运行并显示在泊坞窗图像中的图像-a 。需要有一个配置对象。当容器启动时,它需要某种方式从图像信息生成根文件系统。在构建时,每个Dockerfile命令都会创建一个新映像。
  •   

您可以参考最近的项目TomasTomecek/sen,其中:

https://github.com/TomasTomecek/sen/raw/master/data/image-tree.gif

答案 1 :(得分:1)

如果您使用的是Windows,则可以使用我为自己写的这个免费工具https://github.com/aloneguid/docker-explorer-windows