本文用portainer分析了mongodb的对接图像。但这些层的根是一个场。
第一层的文件是什么?:1。
在/中添加file:93883f863ccd9e401e4f945206887f251075a63d25a8129c9bd73e707397f109
以及如何分析它的起源和内容。
谢谢
发布于 2021-09-20 17:59:45
据我所知,没有查找那些散列的一般位置。它是要添加的构建上下文文件或目录的内容的散列。
你可以去上游,看看如何创建的基本形象。例如,查看当前高寒映像的码头库引用将我带着一个Dockerfile和tgz文件转到高寒工程。摘要是由构建器在tgz文件上执行的,因此构建器可以识别这个映像的缓存版本是否可以重用,因此我认为它对反转它以获取内容并不有用。
相反,如果您想知道文件中的内容,并且无法访问上游的映像源,就像我们对阿尔卑斯山和其他官方图像的访问一样,您可以从注册表中提取这些层并举例说明内容。有一些像潜水这样的检查图像的工具,但我还没有时间研究代码,以确定是否可以安全地使用端口套接字来信任它。您可以直接从注册表中提取这些层。为此,我倾向于自己使用regclient/regctl,因为我已经编写了它,但也有去容器注册表的起重机,和RedHat的skopeo,可能也可以这样做。或者可以使用docker save
将图像转换为一组tar文件来检查每个文件。从regctl来看,检查高山的情况如下:
$ regctl image manifest alpine:latest
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1471,
"digest": "sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 2814446,
"digest": "sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e"
}
]
}
$ regctl blob get alpine:latest sha256:a0d0a0d46f8b52473982a3c466318f479767577551a53ffc9074c9fa7035982e | tar -tvzf -
drwxr-xr-x 0/0 0 2021-08-27 07:05 bin/
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/arch -> /bin/busybox
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/ash -> /bin/busybox
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/base64 -> /bin/busybox
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/bbconfig -> /bin/busybox
-rwxr-xr-x 0/0 829000 2021-06-29 12:21 bin/busybox
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/cat -> /bin/busybox
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/chgrp -> /bin/busybox
lrwxrwxrwx 0/0 0 2021-08-27 07:05 bin/chmod -> /bin/busybox
...
https://stackoverflow.com/questions/69256053
复制相似问题