У меня есть частный реестр 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 и, похоже, он не утруждает себя проверкой безопасности удаления рукописи. Я что-то упускаю?
Есть ли лучший способ сделать это? Если нет, то почему бы и нет, и будет ли это исправлено?
В настоящее время нет api для удаления определенного тега. Теоретически вы можете отправить новый (возможно, пустой) манифест в существующий тег, а затем удалить его. В противном случае вы захотите отслеживать все теги и манифесты в своей процедуре очистки, чтобы определить, что можно безопасно удалить.
В настоящее время существует запрос на вытягивание (# 2169) чтобы обновить API тегов, включая возможность удаления тегов. У него есть веха в выпуске 2.7, так что это может быть функция, которая будет добавлена в будущем.