На первый взгляд поврежденный хеш изображения в личном реестре докеров - PullRequest
0 голосов
/ 13 декабря 2018

Я установил личный реестр Docker (2.6.2) и вытолкнул кучу изображений из Docker (18.09.0-ce, сборка 4d60db472b).

При попытке удалить некоторыетеги (как объяснено здесь и в doc ) я столкнулся с некоторыми проблемами.Я думаю, что теперь я нашел основную причину: многие манифесты изображений не имеют правильного хэша.

Например, curl --user usr:pwd -H Accept:application/vnd.docker.distribution.manifest.v2+json https://my.server/v2/my-repo/manifests/latest возвращает:

{
 "schemaVersion": 2,
 "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
 "config": {
   "mediaType": "application/vnd.docker.container.image.v1+json",
   "size": 5296,
   "digest": "sha256:889..."
  },
"layers": [......]
}

Пока все хорошо, кромечто декларация дайджеста неверна.Я понимаю, что это должен быть хеш манифеста (json вернулся выше), но по какой-то причине это не так.Если я вручную вычислю хэш sha256 для json, это будет 517...

И действительно, запрашивая (или пытаясь удалить) /v2/my-repo/manifests/sha256:889... я получаю 404 Not Found, тогда как /v2/my-repo/manifests/sha256:517... возвращает то же самое, что и/v2/my-repo/manifests/latest.

Не понимаю ли я ожидаемое поведение, я столкнулся с ошибкой?

Это делает удаление старых изображений довольно сложным, и это, вероятно, вызовет другие проблемы.

...