假设我已将一个或多个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之类的工具运行它,然后自己收集标记信息?
目的是在将档案导入/加载到其他计算机上之前找出档案中包含的内容。我想必须有办法找出存档中的内容......
答案 0 :(得分:0)
由于到目前为止我还没有收到任何答案,我会尝试使用我尝试的方式回答自己,这对我有用。
使用CLApplication
和jq的组合,我想出了这个命令:
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"
]
。我希望有一些没有依赖性的东西。
仍然在寻找更好的答案,如果您有更容易使用的东西,请随时发布答案!