如何找出保存的Docker镜像tar文件中包含的内容?

时间:2016-07-12 10:40:07

标签: json docker

假设我已将一个或多个Docker镜像保存到tar文件中,例如

docker save foo:1.2.0 bar:1.4.5 bar:latest > images.tar

查看tar文件,我可以看到除了单个图层目录外,还有一个manifest.json文件,其中包含有关存档内容的一些元信息,包括每个RepoTags数组图像:

[{
  "Config": "...",
  "Layers": [...],
  "RepoTags": [
    "foo:1.2.0"
  ]
},
{
  "Config": "...",
  "Layers": [...],
  "RepoTags": [
    "bar:latest",
    "bar:1.4.5"
  ]
}]

是否有一种简单的方法可以从tar文件中提取该信息,例如通过Docker命令 - 或者我是否必须提取manifest.json文件,通过jq之类的工具运行它,然后自己收集标记信息?

目的是在将档案导入/加载到其他计算机上之前找出档案中包含的内容。我想必须有办法找出存档中的内容......

1 个答案:

答案 0 :(得分:0)

由于到目前为止我还没有收到任何答案,我会尝试使用我尝试的方式回答自己,这对我有用。

使用CLApplicationjq的组合,我想出了这个命令:

tar

这会将tar -xzOf images.tar.gz manifest.json | jq '[.[] | .RepoTags] | add' 文件解压缩到manifest.json,将其输入stdout命令,jq将各种jq数组合并为一个数组:

RepoTags

结果易于阅读并适合我。唯一的缺点是它需要安装[ "foo:1.2.0", "bar:1.4.5", "bar:latest" ] 。我希望有一些没有依赖性的东西。

仍然在寻找更好的答案,如果您有更容易使用的东西,请随时发布答案!