【问题标题】:DockerHub: sha digest doesn't matchDockerHub:sha 摘要不匹配
【发布时间】:2019-12-24 04:10:41
【问题描述】:

我想确定 DockerHub 中最新 docker 镜像的 sha 摘要:

如果我尝试提取最新的图像,我可以看到摘要

# docker pull mysql:latest
...
Digest: sha256:c93ba1bafd65888947f5cd8bd45deb7b996885ec2a16c574c530c389335e9169
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

所以摘要是c93ba1

但是如果我去https://hub.docker.com我会看到

所以有 2 个摘要:511ca265b41c9a355d5c4ec0

另外,如果我尝试使用任何指定的摘要进行拉取:

# docker pull mysql@sha256:9a355d5c4ec0351a954b11b494c597cd4e6ab2c8a04ce69c5f8332819890c43e
Error response from daemon: manifest for mysql@sha256:9a355d5c4ec0351a954b11b494c597cd4e6ab2c8a04ce69c5f8332819890c43e not found: manifest unknown: manifest unknown
# docker pull mysql@sha256:511ca265b41cabb694fda409b8ae87fb0a83db15cfb8429d581c33c7aafacddf
Error response from daemon: manifest for mysql@sha256:511ca265b41cabb694fda409b8ae87fb0a83db15cfb8429d581c33c7aafacddf not found: manifest unknown: manifest unknown

但是,如果我尝试使用从 pull 命令获得的那个,它就可以工作:

docker pull mysql@sha256:c93ba1bafd65888947f5cd8bd45deb7b996885ec2a16c574c530c389335e9169
sha256:c93ba1bafd65888947f5cd8bd45deb7b996885ec2a16c574c530c389335e9169: Pulling from library/mysql
Digest: sha256:c93ba1bafd65888947f5cd8bd45deb7b996885ec2a16c574c530c389335e9169
Status: Image is up to date for mysql@sha256:c93ba1bafd65888947f5cd8bd45deb7b996885ec2a16c574c530c389335e9169
docker.io/library/mysql@sha256:c93ba1bafd65888947f5cd8bd45deb7b996885ec2a16c574c530c389335e9169

我做错了什么? 有没有办法在不拉图像的情况下获取摘要?

更新: 使用 Docker Desktop 2.2 在 MacO 上再次重复相同的过程

docker pull mysql:8
8: Pulling from library/mysql
...
Digest: sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
Status: Downloaded newer image for mysql:8
docker.io/library/mysql:8

然后在 docker hub 上

然后

docker image inspect mysql:8
[
    {
        "Id": "sha256:c8ad2be69a220e93826a6308458627b8d5624dc981050fabf950e5de5a7a08a8",
        "RepoTags": [
            "mysql:8"
        ],
        "RepoDigests": [
            "mysql@sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe"
        ]

还有

docker pull mysql@sha256:a592539c5a616b6642bb48822688b6917b373a1293638f9268e8da33e5e9dd1c
sha256:a592539c5a616b6642bb48822688b6917b373a1293638f9268e8da33e5e9dd1c: Pulling from library/mysql
Digest: sha256:a592539c5a616b6642bb48822688b6917b373a1293638f9268e8da33e5e9dd1c
Status: Downloaded newer image for mysql@sha256:a592539c5a616b6642bb48822688b6917b373a1293638f9268e8da33e5e9dd1c
docker.io/library/mysql@sha256:a592539c5a616b6642bb48822688b6917b373a1293638f9268e8da33e5e9dd1c
docker pull mysql@sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe: Pulling from library/mysql
Digest: sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
Status: Image is up to date for mysql@sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
docker.io/library/mysql@sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe

当我在 Linux VM 上做同样的事情时:

sudo docker pull mysql:8
8: Pulling from library/mysql
...
Digest: sha256:f91e704ffa9f19b9a267d9321550a0772a1b64902226d739d3527fd6edbe3dfe
Status: Downloaded newer image for mysql:8
docker.io/library/mysql:8

所以我不知道这里发生了什么

【问题讨论】:

    标签: docker dockerhub


    【解决方案1】:

    根据this github comment,显然 CLI 在计算 sha256 摘要时使用包含所有不同机器架构选项的清单,而 DockerHub 页面上的每个摘要都是使用仅具有特定单独架构的清单计算的。

    IMO,这是不必要的混乱,应该调整两者之一,以便它们匹配或标记更好。

    更新: 我已经有一段时间没有找到这个了,所以我不记得细节了,但要了解更多信息,请查看this page我相信这与图像清单的 sha 和 清单列表的 sha 之间的差异有关...

    【讨论】:

      【解决方案2】:

      奇怪的是,当我访问 dockerhub 时,mysql:latest(现在)有一个不同的摘要,它报告为一个月前更新:

      https://hub.docker.com/layers/mysql/library/mysql/latest/images/sha256-a65e1689b806ccb757887565a3c1d8e7467f14621012d472076cad4117eb06f3

      在您的示例中,c93va1 是您架构的正确哈希值。你用的是 Mac 吗?其他哈希值(如果有效)适用于 ARM 和 AMD64 上 Linux 的图像。这能解释你看到的差异吗?

      我发现 dockerhub 在处理清单时不太理想。 Google Container Registry 显示图像清单以及哈希值,因此更容易证实。

      查看我提出的相关问题的答案,希望对您有所帮助:https://stackoverflow.com/a/57878742/609290

      【讨论】:

      • 等等,为什么 Linux-x86 和 MacOs-x86 有不同的哈希值?我想无论如何在 MacOs 上,你在带有 linux 的 VM 中运行 docker,对吧?
      • 同时在 MacOs 上 docker inspect mysql:8 返回 "Architecture": "amd64", "Os": "linux",
      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 2011-02-05
      相关资源
      最近更新 更多