如何查看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的所有存储驱动程序。