本地构建的 docker 图像的 sha256

sha256 of locally built docker image

如何获取已在本地构建的 docker 图像的 sha256 校验和?

我想使用校验和来注释派生图像中的 FROM 指令:

FROM name@sha256:checksum

我已经尝试过 docker inspect 的校验和。

其中一些我只是出于绝望才最终为我的 docker 图像找到正确的校验和,但我找不到正确的校验和。由于层数的原因,我唯一没有尝试的是遍历 all 层,以防它们处于随机顺序。但是一开始就把它们放在那里是没有意义的。

当我运行 docker build -t <some name> .在导出图像的Docker文件的目录中时,我看到的错误是:

Step 1/7 : FROM name@sha256:<checksum> repository name not found: does not exist or no pull access

信息

docker 在 FROM 行中查找的校验和来自注册表服务器。在检查输出中,您将在 RepoDigest 部分看到:

docker inspect -f '{{.RepoDigests}}' $image_name

如果您还没有将此图像推送到注册服务器,那么您将无法使用此哈希值。

例如:

$ docker inspect -f '{{.RepoDigests}}' busybox:latest
[busybox@sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f]

$ cat df.testsha
FROM busybox@sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f
CMD echo "hello world"

$ docker build -f df.testsha -t test-sha .
Sending build context to Docker daemon  23.35MB
Step 1/2 : FROM busybox@sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f
 ---> 00f017a8c2a6
Step 2/2 : CMD echo "hello world"
 ---> Running in c516e5b6a694
 ---> 68dc47866183
Removing intermediate container c516e5b6a694
Successfully built 68dc47866183
Successfully tagged test-sha:latest

$ docker run --rm test-sha
hello world