我做了一个docker拉,可以列出下载的图像。我想看看这张照片的内容。在网上查了一下,但没有直接的答案。
当前回答
也许这不是一个非常直接的方法,但这个方法对我来说很有效。 我有一个ECR Repo(亚马逊容器服务存储库),我想看看它的代码。
首先,我们需要将想要访问的repo保存为tar文件。在我的例子中,命令是这样的- docker save .dkr.ecr.us-east-1.amazonaws.com/<name_of_repo>:image-tag > saved-repo.tar 使用- tar -xvf saved-repo.tar命令解压文件。你可以看到很多文件夹和文件 现在尝试找到包含您正在寻找的代码的文件(如果您知道部分代码) 文件搜索命令- grep - irl "要搜索的字符串" ./
这样你就能拿到文件了。即使该文件也可能被tar,所以使用步骤2中提到的命令解tar它。
如果你不知道你要搜索的代码,你将需要浏览你在步骤2之后得到的所有文件,这可能有点累。
祝一切顺利!
其他回答
使用Docker EE for Windows (17.66.2 - EE -6 on Hyper-V Server 2016),可以在主机操作系统的C:\ProgramData\ Docker \windowsfilter\路径下检查Windows容器的所有内容。
不需要特殊安装。
文件夹前缀可以通过docker ps -a输出的容器id找到。
如果图像包含一个shell,您可以使用该图像运行一个交互式shell容器,并探索该图像所具有的任何内容。如果sh不可用,busybox ash shell可能可用。
例如:
docker run -it image_name sh
或者跟随带有入口点的图像
docker run -it --entrypoint sh image_name
或者,如果你想查看映像是如何构建的,也就是Dockerfile中的步骤,你可以:
docker image history --no-trunc image_name > image_history
这些步骤将被记录到image_history文件中。
如果你想检查图像内容而不运行它,你可以这样做:
$ 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存储驱动程序。
您不应该仅仅为了查看图像内容而启动容器。例如,您可能希望查找恶意内容,而不是运行它。使用“create”而不是“run”;
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
有一个叫做anchor - cli的免费开源工具可以用来扫描容器图像。这个命令将允许您列出容器映像中的所有文件
anchore-cli image content myrepo/app:latest files
https://anchore.com/opensource/
编辑:不再从anchore.com,这是一个python程序,你可以从https://github.com/anchore/anchore-cli安装
推荐文章
- 如何用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到我的私人注册表?
- Docker- compose无法连接到Docker Daemon
- 单个命令停止和删除docker容器
- 使用GPU从docker容器?