如何获取已本地构建的docker镜像的sha256校验和?
我想使用校验和来注释派生图像中的FROM
指令:
FROM name@sha256:checksum
我已经尝试过来自docker inspect
的校验和。
Layers
列表中的第一个校验和和最后一个校验和均无效。"Id"
中的那个无效。"Parent"
中的那个无效。"Container"
中的那个无效。"Image"
中的那个无效。其中一些我只是绝望地试图找到我的docker图像的正确校验和,但我找不到正确的校验和。由于层的数量,我唯一没有尝试的是,如果它们是随机顺序,则通过所有层。但是把它们放在那里就像开始那样没有意义。
我在导出图像的Dockerfile目录中运行docker build -t <some name> .
时看到的错误是:
Step 1/7 : FROM name@sha256:<checksum> repository name not found: does not exist or no pull access
Docker version 17.05.0-ce, build 89658be
(通过docker --version
获得) docker info
的输出:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 3841
Server Version: 17.05.0-ce
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 2620
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9048e5e50717ea4497b757314bad98ea3763c145
runc version: 9c2d8d184e5da67c95d601382adf14862e4f2228
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.4.0-78-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.684GiB
Name: xiaolong-hp-pavilion
ID: QCJS:JPK4:KC7J:6MYF:WWCA:XQM2:7AF7:HWWI:BRZK:GT6B:D2NP:OJFS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
答案 0 :(得分:2)
校验和停泊器在FROM
行中查找来自注册表服务器。在检查输出中,您将在RepoDigest部分中看到这一点:
docker inspect -f '{{.RepoDigests}}' $image_name
如果您还没有将此图片推送到注册服务器,那么您将无法使用此哈希值。
E.g:
$ 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