Я установил личный реестр 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
.
Не понимаю ли я ожидаемое поведение, я столкнулся с ошибкой?
Это делает удаление старых изображений довольно сложным, и это, вероятно, вызовет другие проблемы.