sha256本地建造的码头图像

时间:2017-05-20 14:23:02

标签: docker sha256 docker-image

如何获取已本地构建的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版本: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
    

1 个答案:

答案 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