Назад | Перейти на главную страницу

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

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

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

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