我做了一个docker pull,可以列出下载的图像。我想看这张图片的内容。在网上进行了搜索,但没有直接答案。
我做了一个docker pull,可以列出下载的图像。我想看这张图片的内容。在网上进行了搜索,但没有直接答案。
Answers:
您可以使用该图像运行一个交互式外壳容器,并浏览该图像具有的任何内容。
例如:
docker run -it image_name sh
或关注带有 entrypoint
docker run -it --entrypoint sh image_name
或者,如果您想查看图像的构建方式,即图像中的步骤Dockerfile
,则可以:
docker image history --no-trunc image_name > image_history
步骤将被登录到image_history
文件中。
docker run -it --entrypoint cmd <image_name>
将起作用。
这里接受的答案是有问题的,因为不能保证图像将具有任何类型的交互式外壳。例如,无人机/无人机图像包含在单个命令中/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".
这并非不常见的配置;许多最小映像仅包含支持目标服务所需的二进制文件。幸运的是,存在用于探索图像文件系统的机制,这些机制不依赖于图像的内容。最简单的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
那里的意思是“给我最近泊坞窗容器的id”。您可以将其替换为明确的容器名称或ID。
您不应该只是为了查看图像内容而启动容器。例如,您可能想要查找恶意内容,而不是运行它。使用“创建”而不是“运行”;
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
docker export tmp_$$ > image-fs.tar
。
docker export tmp_$$ | tar t
会无法正常工作。
tar
可能未安装在您的计算机上。尝试tar --help
检查它。
-o
参数指定要写入的文件。例如docker export -o c:\temp\tmp_$$.tar tmp_$$
。
docker save nginx > nginx.tar
tar -xvf nginx.tar
存在以下文件:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
要么
您可以使用潜水与TUI交互地查看图像内容
docker
至只需要查看本质上只是一种不同类型的存档文件的内容。
docker save --output nginx.tar nginx:latest
,否则,根据文档,它将包含“所有父层以及所有标签和版本”
探索DOCKER图像!
弄清楚什么样的壳是有bash
或sh
或...
首先检查图像: docker inspect name-of-container-or-image
在json返回中查找entrypoint
或cmd
。
然后做: docker run --rm -it --entrypoint=/bin/bash name-of-image
一旦进入do:ls -lsa
或任何其他shell命令,例如:cd ..
-it
交互式……和tty 的代表。--rm
运行后取出容器的支架。
ls
。或者实际上是所有通用工具。
有一个免费的开源工具Anchore,可用于扫描容器图像。此命令将允许您列出容器映像中的所有文件
锚定cli图像内容myrepo / app:最新文件