我做了一个docker拉,可以列出下载的图像。我想看看这张照片的内容。在网上查了一下,但没有直接的答案。
当前回答
如果你想在不启动容器的情况下列出镜像中的文件:
docker create --name listfiles <image name>
docker export listfiles | tar -t
docker rm listfiles
其他回答
要列出映像的详细内容,您必须运行docker命令——rm image/name ls -alR,其中——rm表示一旦从容器中退出就立即删除。
这里公认的答案是有问题的,因为不能保证图像将具有任何类型的交互式外壳。例如,无人机/无人机图像包含在一个命令/无人机上,它也有一个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".
这不是一个不常见的配置;许多最小映像只包含支持目标服务所需的二进制文件。幸运的是,有一些不依赖于图像内容的机制用于探索图像文件系统。最简单的可能是docker export命令,它将容器文件系统导出为tar归档文件。因此,启动一个容器(它是否失败并不重要):
$ 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替换它。
如果你想检查图像内容而不运行它,你可以这样做:
$ sudo bash
...
$ cd /var/lib/docker # default path in most installations
$ find . -iname a_file_inside_the_image.ext
... (will find the base path here)
这适用于当前默认的BTRFS存储驱动程序。
docker save nginx > nginx.tar
tar -xvf nginx.tar
有以下文件:
清单。json -描述具有Container属性的文件系统层和json文件的名称。 .json -容器属性 -每个“layerid”目录包含json文件,描述与该层相关的层属性和文件系统。Docker将容器映像存储为层,通过跨映像重用层来优化存储空间。
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
OR
您可以使用dive与TUI交互查看图像内容
https://github.com/wagoodman/dive
我们可以尝试一个简单的方法,如下所示:
docker image inspect image_id
这在Docker版本中是有效的:
DockerVersion": "18.05.0-ce"
推荐文章
- 试图连接到https://index.docker.io时,网络超时
- 为每个Docker图像查找图层和图层大小
- 如何避免在为Python项目构建Docker映像时重新安装包?
- 如何用docker-compose更新现有图像?
- 如何在构建docker期间设置环境变量
- 拉访问拒绝存储库不存在或可能需要docker登录
- 如何在ENTRYPOINT数组中使用Docker环境变量?
- Docker:容器不断地重新启动
- Mac/OS X上的/var/lib/docker在哪里
- 如何用docker-compose标记docker图像
- 从环境文件中读入环境变量
- 禁用特定RUN命令的缓存
- 从Docker容器获取环境变量
- E: gnupg, gnupg2和gnupg1似乎没有安装,但是这个操作需要其中一个
- 如何从docker更改默认docker注册表。IO到我的私人注册表?