如何查看docker图像内容

我做了一个docker拉,可以列出下载的图像。 我想看看这个图片的内容。 在网上search,但没有直接的答案。 谢谢。

您可以使用该映像运行交互式shell容器,并探索映像所具有的任何内容。

例如:

docker run -it image_name sh

或者,如果您想查看图像是如何构build的,即Dockerfile的步骤,您可以:

 docker image history --no-trunc image_name > image_history 

这些步骤将被logging到image_history文件中。

这里接受的答案是有问题的,因为不能保证图像将具有任何forms的交互式shell。 例如, 无人机/无人机图像包含一个命令/drone ,它也有一个ENTRYPOINT ,所以这将失败:

 $ docker run -it drone/drone sh FATA[0000] DRONE_HOST is not properly configured 

这将失败:

 $ docker run --rm -it --entrypoint sh drone/drone docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH". 

这不是一个不寻常的configuration; 许多最小的图像只包含支持目标服务所需的二进制文件。 幸运的是,有一些机制可以探索不依赖于图像内容的图像文件系统。 最简单的可能是docker export命令,它会将容器文件系统导出为tar档案。 所以,启动一个容器(不pipe它是否失败都没关系):

 $ docker run -it drone/drone sh FATA[0000] DRONE_HOST is not properly configured 

然后使用docker export将文件系统导出到tar

 $ docker export $(docker ps -lq) | tar tf - 

那里的docker ps -lq意思是“给我最近的docker工人的id”。 你可以用一个明确的容器名称或id来代替它。

Docker仍在build设中。 上次我检查它没有这个function作为命令行工具的一部分。

但是,您可以尝试对图像进行docker检查。 您将在GraphDriver下看到一个名为Data的部分。 在这里,您可以find可以运行的诸如UpperDir之类的path。

这可能不适用于docker的所有存储驱动程序。