Почему docker manifest ha sh, указанный в docker images --digests, не соответствует фактическому манифесту ha sh, полученному из docker? - PullRequest
0 голосов
/ 29 мая 2020

Я в тупике, пытаясь понять, почему тег манифеста sha256 отличается между docker pull и docker pu sh. Specifi c пример:

localhost:5000/vault     latest              sha256:c89130e9e494c96f0945235597372b271a991eb7c694f7b42be8d9a23081c1a0   1f50594a34a6        7 days ago          139MB
vault                    latest              sha256:12587718b79dc5aff542c410d0bcb97e7fa08a6b4a8d142c74464a9df0c76d4f   1f50594a34a6        7 days ago          139MB

Как я сюда попал:

$ docker pull vault:latest
$ docker tag vault:latest localhost:5000/vault:latest
$ docker push localhost:5000/vault:latest

Теперь, если я вытащу манифест прямо из docker хаба:

$ export JWT=`curl --silent "https://auth.docker.io/token?scope=repository:library/vault:pull&service=registry.docker.io" | jq -r '.token'`
$ curl  -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $JWT" https://registry-1.docker.io/v2/library/vault/manifests/latest > vault.manifest
$ sha256sum vault.manifest 
c89130e9e494c96f0945235597372b271a991eb7c694f7b42be8d9a23081c1a0  vault.manifest

Обратите внимание, что это соответствует манифесту ha sh localhost: 5000 / vault: latest, а не ha sh vault: latest, как я ожидал.

Содержимое кажется действительным (фактический файл соответствует не заканчиваться новой строкой):

{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
   "config": {
      "mediaType": "application/vnd.docker.container.image.v1+json",
      "size": 5223,
      "digest": "sha256:1f50594a34a699528e5c7e867ee3cc342c0975b3dadbdadbbe43722038dad105"
   },
   "layers": [
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 2795580,
         "digest": "sha256:21c83c5242199776c232920ddb58cfa2a46b17e42ed831ca9001c8dbc532d22d"
      },
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 1262,
         "digest": "sha256:d710f8cd918f3e623bba547441f6276ca797982edc8ff912ec243acb479e115d"
      },
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 49320835,
         "digest": "sha256:fd8d5779418b3613a0f7653926ab66bba7e55f18e3138b0f40dbb9e8434d377d"
      },
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 155,
         "digest": "sha256:a42e38f401891da6072bce13bd68a7ebeb2f41ff52719e0a8f0a9d4055d04250"
      },
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 1818,
         "digest": "sha256:95183e98f2b7de854a659d9fba801abcf7ddd350c826ac4f9d1a1283850b3752"
      }
   ]
}

Более того, я вижу манифест в моем локальном реестре, и он такой же:

$ docker exec -ti determined_curran sha256sum /var/lib/registry/docker/registry/v2/blobs/sha256/c8/c89130e9e494c96f0945235597372b271a991eb7c694f7b42be8d9a23081c1a0/data
c89130e9e494c96f0945235597372b271a991eb7c694f7b42be8d9a23081c1a0  /var/lib/registry/docker/registry/v2/blobs/sha256/c8/c89130e9e494c96f0945235597372b271a991eb7c694f7b42be8d9a23081c1a0/data

Откуда sha256:12587718b79dc5aff542c410d0bcb97e7fa08a6b4a8d142c74464a9df0c76d4f когда я тяну от docker ступицы?

...