Простой способ удалить тег из частного реестра 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, так что это может быть функция, которая будет добавлена в будущем.