如何查看Docker图像的树状视图?

uqjltbpv  于 2023-01-16  发布在  Docker
关注(0)|答案(1)|浏览(129)

我知道docker已弃用docker images命令中的--tree标志。但我找不到任何方便的命令来获得与docker images --tree相同的输出。我找到了dockviz。但它似乎是另一个要运行的容器。是否有任何内置的cli命令可以在不使用dockviz的情况下查看映像的树视图

mec1mxoz

mec1mxoz1#

2021年11月更新:对于在线公共图像,您有在线服务contains.dev
更新日期:2018年11月,Docker 18.09。
现在您拥有了wagoodman/dive,这是一个用于浏览Docker图像中每个图层的工具

要分析Docker映像,只需运行带有image tag/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月更新(后Docker 1.10:Docker1.11soune1.12),一年后,如在同一期5001中所述,由X1 E3 F1 X:
从1.10开始,层ID的工作方式发生了根本性的变化。关于这个主题的详细解释,请参见#20399。还有#20451,但我不确定它是否可以被nate/dockviz映像使用。
就我个人而言,我发现新图层的工作方式非常非常令人困惑,比以前更不透明,而且也没有很好的文档记录。
AFAIK @tonistiigi在上述问题上的评论是唯一可用的公开解释。
Tõnis Tiigi
1.10之前的版本没有层的概念,或者换个Angular 想想,每个图像只有一个层,你建立一个图像链,你推拉一个链,链中的所有图像都有自己的配置。
现在有一个层的概念,即内容可寻址文件系统差异。每个映像配置都有一个层引用数组,这些引用组成映像的根文件系统,并且没有映像需要来自其父映像的任何内容才能运行。推送和拉取仅移动单个映像,父映像仅为本地构建生成以用于该高速缓存。
如果您使用Docker文件构建映像,则每个命令都会将历史记录项添加到映像配置中。这会将历史记录项存储到命令中,以便您可以在Docker历史记录中查看它。由于这是映像配置的一部分,因此它也会随推/拉一起移动,并包含在校验和验证中。
以下是内容可寻址配置的一些示例:
https://gist.github.com/tonistiigi/6447977af6a5c38bbed8
v1.10中的术语:(术语在实现中确实没有改变,但以前我们的文档可能会简化一些事情)。

*层是一个文件系统差异。一堆文件堆叠在一起组成一个根文件系统。层由图形驱动程序管理,它们不知道任何关于图像的信息。
***映像是您可以运行并显示在docker images -a**中的东西。需要有一个配置对象。当容器启动时,它需要某种方法从映像信息生成根文件系统。在构建时,每个Dockerfile命令都会创建一个新映像。

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

  • 必须理解1.10新层格式(commit 82b224e
  • 包括图像树表示:

相关问题