在Docker镜像中搜索特定文件

Searching a Docker Image for a particular file

新码头工人总数。我的问题是,是否有一种方法可以搜索Docker映像以查看是否存在任何JAR文件。

如果我理解正确的话,Docker图像是在层中构建的,并且每个层不一定单独属于该图像。我最初的方法是"save image>image.tar",将所有层放在一起,然后递归地尝试搜索结果tar中的模式"*.jar"。例如,如果使用标准tar,我可以在tar的所有子目录中看到"less filename.tar"。这似乎不是一个已被涂上焦油的图像的情况。

有没有一种方法可以做到这一点,或者我是否从根本上误解了一个图像是如何构建的,当它被涂上焦油时会发生什么?

编辑:我实际上想专门针对图像执行此操作,而不是启动图像的Docker容器,然后搜索它。这是可能的吗?

编辑:好的,我会尽量让这更清楚。我尝试过采用这种方法:

1)从docker image创建tarball:docker save image>image.jar2)然后我尝试用这个简单的脚本在tar中搜索jar文件:

1
2
3
4
#Will list and extract all jars from a tar file
arc=$1.tar; file='*.jar';

tar tvf $arc | grep -E"$file" && tar xvf $arc"$file"

3)这将适用于标准tarball,但不适用于docker tarball。

再一次,我对Docker完全陌生,我只是想知道是否还有其他方法可以做到这一点。


执行以下操作

  • docker run -it yourimage /bin/bash的形式运行图像
  • 现在您处于交互模式。
  • 然后使用find / -name *.jar(如果find命令不可用,安装它)

  • Docker客户机有一个"导出"选项。从配置了环境以使用Docker客户机运行的shell

    1
    docker export <your image> | tar tf - | grep etc/issue

    其结果如下:

    1
    etc/issue