根据反馈更新
对于等于或高于17.03的Docker版本,如何查看图像的图层?虽然我为早期的Docker系统找到了大量的解决方案(参见this SO question),但现在还能做到吗?
我特别感兴趣的是能够一次删除一个图层。我记得很久以前就已经读过这篇文章了(在Docker的时候,大约需要12-18个月!)但是,我丢失了这个参考资料,无法在网络上的任何地方找到它。我从下面的第一个答案中了解到,中间层不再下载并报告为缺失,但如果我已经下载了整个图像,是否有办法将其分开一层?
答案 0 :(得分:3)
你提及" AUFS"但与存储驱动程序无关的问题。
在v1.10.0之前,docker会下载一个图像及其所有中间层。使用docker history <image_id>
,您可以获得中间层ID。然后,您可以浏览/var/lib/docker/<storage_driver>/
目录以查看每个中间层引入的更改,或者甚至可以从其中任何一个启动容器。
根据https://github.com/moby/moby/issues/20131:
,情况已不再如此&#34; ...我们不再拉父母了。只有你 如果您自己构建了图像或迁移了旧图像,请使用它们 图像链。&#34;
请注意,docker history
现在输出<missing>
而不是每个不可用的中间层的图像ID。
$ docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
ccc7a11d65b1 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 weeks ago /bin/sh -c mkdir -p /run/systemd && echo '... 7B
<missing> 2 weeks ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\... 2.76kB
<missing> 2 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0B
<missing> 2 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' >... 745B
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:39d3593ea220e68... 120MB
此处提供更多信息:https://github.com/moby/moby/wiki/Engine-v1.10.0-content-addressability-migration
话虽如此,如果您可以访问Dockerfile 和用于构建图像的支持资源,您可以在本地构建图像(这将保存每个中间层)
Ubuntu在这里发布其Dockerfiles: https://hub.docker.com/_/ubuntu/
因此,如果您想为示例构建一个17.10图像,您可以:
In this case the dockerfile contains the following command: ADD ubuntu-artful-core-cloudimg-amd64-root.tar.gz / You can find that file with a Google search Note: The ADD command automatically extracts and unzips recognized formats.
docker build .
如果您无法访问Dockerfile,可以尝试使用docker history no-trunc
的输出创建一个,您可能会遇到几个问题:
docker history
的输出不会告诉您完整的故事