Cara mudah untuk menghapus tag dari registri Docker pribadi?

Saya memiliki registri Docker pribadi, v2. 6. 0, berisi beberapa versi yang ditandai pada gambar:

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

Saya ingin menghapus satu tag tanpa harus menghapus gambar. Jadi jika saya menghapus tag 2, tidak apa-apa untuk menghapus gambar karena tidak ada lagi yang merujuknya. Tetapi jika saya menghapus tag 1, hanya tag itu yang harus pergi, bukan gambarnya.

Itu menyarankan permintaan API seperti ini:

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

Tapi itu memberi saya 404. Sebagai gantinya saya harus menghapus manifes, yang berarti melakukan semua pekerjaan untuk memeriksa bahwa itu tidak digunakan oleh tag lain.

Saya melihat sumber dari https://github.com/fraunhoferfokus/deckschrubber dan itu tidak muncul untuk masalah itu sendiri dengan memeriksa bahwa itu aman untuk menghapus naskah. Apakah saya kehilangan sesuatu?

Apakah ada cara yang lebih baik untuk melakukan ini? Jika tidak, mengapa tidak, dan apakah itu mungkin diperbaiki?

Saat ini ada tidak ada api untuk menghapus tag tertentu. Secara teoritis Anda dapat mendorong manifes baru (mungkin kosong) ke tag yang ada, dan kemudian menghapusnya. Jika tidak, Anda akan ingin melacak semua tag dan Manifes dalam rutinitas pembersihan Anda untuk mengidentifikasi apa yang aman untuk dihapus.


Pembaruan:

Tag penghapusan ditambahkan ke sekarang 1.0 Distribusi OCI-spec. Dengan itu, permintaan tarik (#3427) telah disetujui untuk distribusi / distribusi yang merupakan hulu untuk gambar registri. Ini mendapat tonggak sejarah dari rilis 3.0, jadi ini mungkin fitur yang ditambahkan di masa mendatang.

Saya juga sedang mengerjakan regclient yang mengimplementasikan kedua tag delete API, dan kembali mendorong manifes kosong dan menghapusnya. Untuk CLI, regclient menyertakan regctl yang akan terlihat seperti:

regctl tag rm registry:5000/repo:tag