在Docker镜像中搜索特定文件

时间:2016-12-08 11:55:45

标签: image docker tar

Docker的新增内容。我的问题是,有没有办法搜索Docker镜像,看看是否有任何Jar文件存在。

如果我理解正确,Docker图像是以图层形式构建的,并且每个图层不一定只属于该图像。我最初的方法是“保存图像> image.tar”将所有图层组合在一起然后递归尝试搜索结果tar以获得模式“* .jar”。使用标准tar,例如,我“less filename.tar”我可以直接看到tar的所有子目录。对于已被焦化的图像,情况似乎并非如此。

有没有办法做到这一点,或者我是否从根本上误解了图像是如何构建的以及在图像被轮询时会发生什么?

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

编辑:好的我会尝试让这个更清楚。我试图采用这种方法:

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

#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完全陌生,我只是想知道是否还有其他方法可以做到这一点。

2 个答案:

答案 0 :(得分:2)

执行以下操作

  1. 将图片作为docker run -it yourimage /bin/bash
  2. 运行
  3. 现在您处于互动模式。
  4. 然后使用find / -name *.jar(如果找不到命令,请安装它)

答案 1 :(得分:1)

docker客户端有一个" export"选项。从已配置环境的shell中使用docker client运行

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

产生以下结果:

etc/issue