Простой способ удалить тег из частного реестра Docker?

У меня есть частный реестр Docker версии v2.6.0, содержащий несколько помеченных версий на изображении:

foo/bar:1foo/bar:1_keep    (same image as 1)foo/bar:2foo/bar:3foo/bar:latest    (same image as 3)

Я хочу удалить один тег, не обязательно удаляя изображение. Так что, если я удалю тег 2, можно удалить изображение, потому что больше на него ничего не ссылается. Но если я удалю тег 1, должен быть удален только этот тег, а не изображение.

Это предполагает такой запрос API, как этот:

DELETE http://repo/v2/foo/bar/tags/1

Но это дает мне 404. Вместо этого я должен удалить манифест, что означает выполнение всей работы по проверке того, что он не используется другим тегом.

Я посмотрел на источник https://github.com/fraunhoferfokus/deckschrubber и, похоже, он не утруждает себя проверкой того, безопасно ли удалять рукопись. Я что-то упускаю?

Есть ли лучший способ сделать это? Если нет, то почему бы и нет, и есть ли вероятность, что это будет исправлено?

В настоящее время существует нет api для удаления определенного тега. Теоретически вы могли бы поместить новый (возможно, пустой) манифест в существующий тег, а затем удалить его. В противном случае вам потребуется отслеживать все теги и манифесты в вашей процедуре очистки, чтобы определить, что безопасно удалять.


Обновление:

Удаление тегов было добавлено в now 1.0 Распределение OCI-спецификация. С этим, запрос на вытягивание (#3427) был одобрен для распространения / распространения, который является исходным для образа реестра. Это стало важной вехой в выпуске 3.0, так что это может быть функция, которая будет добавлена в будущем.

Я также работал над регклиент который реализует как API удаления тегов, так и возвращается к отправке пустого манифеста и его удалению. Для CLI regclient включает regctl, который будет выглядеть следующим образом:

regctl tag rm registry:5000/repo:tag