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

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

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

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

Это предполагает запрос API следующим образом:

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

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

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

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

1 ответ

Решение

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

В настоящее время существует запрос на извлечение (#2169) для обновления API тегов, включая возможность удаления тегов. Он получил веху в версии 2.7, так что это может быть функция, которая будет добавлена ​​в будущем.

Другие вопросы по тегам