我知道docker已弃用docker images命令中的--tree标志。但我找不到任何方便的命令来获得与docker images --tree相同的输出。我找到了dockviz。但它似乎是另一个要运行的容器。是否有任何内置的cli命令可以在不使用dockviz的情况下查看映像的树视图
docker images
--tree
docker images --tree
dockviz
mec1mxoz1#
2021年11月更新:对于在线公共图像,您有在线服务contains.dev。更新日期:2018年11月,Docker 18.09。现在您拥有了wagoodman/dive,这是一个用于浏览Docker图像中每个图层的工具
contains.dev
wagoodman/dive
要分析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/6447977af6a5c38bbed8v1.10中的术语:(术语在实现中确实没有改变,但以前我们的文档可能会简化一些事情)。
-t
*层是一个文件系统差异。一堆文件堆叠在一起组成一个根文件系统。层由图形驱动程序管理,它们不知道任何关于图像的信息。***映像是您可以运行并显示在docker images -a**中的东西。需要有一个配置对象。当容器启动时,它需要某种方法从映像信息生成根文件系统。在构建时,每个Dockerfile命令都会创建一个新映像。
docker images -a
您可以参考最近的项目TomasTomecek/sen,它:
TomasTomecek/sen
1条答案
按热度按时间mec1mxoz1#
2021年11月更新:对于在线公共图像,您有在线服务
contains.dev
。更新日期:2018年11月,Docker 18.09。
现在您拥有了
wagoodman/dive
,这是一个用于浏览Docker图像中每个图层的工具要分析Docker映像,只需运行带有image tag/id/digest的潜水:
或者,如果您想构建映像,则直接开始分析:
issue 5001提到的当前(2015年9月,docker 1.8)变通方案实际上仍然是
dockviz
:-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
,它: