Docker 的新手。我的问题是,是否有一种方法可以搜索 Docker 镜像以查看是否存在任何 Jar 文件。
如果我理解正确的话,Docker 镜像是分层构建的,每一层不一定只属于该镜像。我最初的方法是“保存图像 > image.tar”以将所有层放在一起,然后递归地尝试在生成的 tar 中搜索模式“*.jar”。使用标准的 tar,例如,如果我“less filename.tar”,我可以直接看到 tar 的所有子目录。对于已压缩的图像,情况似乎并非如此。
有没有办法做到这一点,或者我是否从根本上误解了图像的构建方式以及压缩后会发生什么?
编辑:我实际上想专门针对图像执行此操作,而不是启动图像的 docker 容器然后搜索它。这可能吗?
编辑:好的,我会尽力使它更清楚。我尝试采用这种方法:
1) 从 docker 镜像创建一个压缩包: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) 这适用于标准压缩包但不适用于 docker 压缩包
同样,我对 docker 完全陌生,我只想知道是否有另一种方法可以做到这一点。
最佳答案
执行以下操作
- 以
docker run -it yourimage/bin/bash
运行图像
- 现在您处于交互模式。
- 然后使用
find/-name *.jar
(如果 find 命令不可用,请安装它)
关于image - 在 Docker 镜像中搜索特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41038933/