我知道docker已经从--tree
命令弃用docker images
标志。但我找不到任何方便的命令来获得像docker images --tree
这样的输出。我找到了dockviz。但它似乎是另一个容器。是否有内置的cli命令可以在不使用dockviz
答案 0 :(得分:62)
2018年11月更新,码头18.09
您现在拥有wagoodman/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是唯一可用的公开解释。
Pre v1.10没有层的概念或者另一种思考方式是每个图像只有一层。你建立了一系列图像,你推拉链条。链中的所有这些图像都有自己的配置。
现在有一个层的概念是内容可寻址的文件系统差异。每个图像配置都有一个图层引用数组,它们构成了图像的根文件系统,没有任何图像需要从父文件中运行任何内容。推拉仅移动单个图像,父图像仅为本地构建生成以用于缓存。
如果使用Dockerfile构建映像,则每个命令都会将历史记录项添加到映像配置中。这存储为命令,因此您可以在docker历史记录中查看它。由于这是图像配置的一部分,它也可以通过推/拉移动,并包含在校验和验证中。
以下是内容可寻址配置的一些示例:
https://gist.github.com/tonistiigi/6447977af6a5c38bbed8v1.10中的术语:(这些术语实际上没有改变,但以前我们的文档可能简化了一些事情。)
- 图层是文件系统差异。一堆堆叠在一起的文件组成了一个根文件系统。图层由图形驱动程序管理,它们对图像一无所知。
- 图像是您可以运行并显示在泊坞窗图像中的图像-a 。需要有一个配置对象。当容器启动时,它需要某种方式从图像信息生成根文件系统。在构建时,每个Dockerfile命令都会创建一个新映像。
您可以参考最近的项目TomasTomecek/sen
,其中:
答案 1 :(得分:1)
如果您使用的是Windows,则可以使用我为自己写的这个免费工具https://github.com/aloneguid/docker-explorer-windows