本地构建docker映像的sha256

本地构建docker映像的sha256,docker,sha256,docker-image,Docker,Sha256,Docker Image,如何获取本地构建的docker映像的sha256校验和 我想使用校验和在派生图像中注释来自指令的: FROM name@sha256:checksum 我已经尝试了来自docker inspect的校验和 层列表中的第一个和最后一个校验和都不起作用 “Id”中的一个无效 “父项”中的一项不起作用 “Container”中的一个不起作用 “Image”中的一个不起作用 其中一些我只是出于绝望才尝试最终为我的docker图像找到正确的校验和,但我找不到正确的校验和。由于层数的原因,我唯一没有尝

如何获取本地构建的docker映像的sha256校验和

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

FROM name@sha256:checksum
我已经尝试了来自
docker inspect
的校验和

  • 列表中的第一个和最后一个校验和都不起作用
  • “Id”
    中的一个无效
  • “父项”
    中的一项不起作用
  • “Container”
    中的一个不起作用
  • “Image”
    中的一个不起作用
其中一些我只是出于绝望才尝试最终为我的docker图像找到正确的校验和,但我找不到正确的校验和。由于层数的原因,我唯一没有尝试的是遍历所有的层,以防它们以随机顺序排列。但一开始就把它们放在那里是没有意义的

在派生映像的docker文件目录中运行
docker build-t.
时,我看到的错误是:

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

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

docker inspect -f '{{.RepoDigests}}' $image_name
如果尚未将此映像推送到注册表服务器,则无法使用此哈希值

例如:


我不明白为什么会有人排除这种可能性。有没有其他方法可以确保我是从正确的图像中派生出来的?我不知道。其目的是允许在不同的主机上可靠地构建映像,并知道它们具有相同的映像。docker在主机之间移动图像的方法是使用注册表。Docker Hub是一个注册表,或者您可以使用注册表Docker映像(在Hub上提供)运行自己的私有注册表。我想我只接受这个答案。我似乎来自一个错误的假设(我可以对本地构建的非注册表图像使用sha256校验和)。
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