Maneira fácil de remover uma tag de um registro Docker privado?

Eu tenho um registro Docker privado, v2. 6. 0, contendo várias versões marcadas em uma imagem:

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

Eu quero remover uma única tag sem necessariamente remover a imagem. Portanto, se eu remover a tag 2, não há problema em remover a imagem porque nada mais se refere a ela. Mas se eu remover a tag 1, apenas essa tag deve ir, não a imagem.

Isso sugere uma solicitação de API como esta:

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

Mas isso me dá um 404. Em vez disso, tenho que excluir o manifesto, o que significa fazer todo o trabalho de verificar se ele não está em uso por outra tag.

Eu olhei para a fonte de https://github.com/fraunhoferfokus/deckschrubber e não parece se preocupar em verificar se é seguro remover um manuscrito. Estou a perder alguma coisa?

Existe uma maneira melhor de fazer isso? Se não, por que não, e é provável que seja corrigido?

Atualmente existe nenhuma api para excluir uma tag específica. Teoricamente, você poderia enviar um novo manifesto (possivelmente vazio) para uma tag existente e, em seguida, excluí-lo. Caso contrário, você desejará rastrear todas as tags e manifestos em sua rotina de limpeza para identificar o que é seguro excluir.


Actualizacao:

A exclusão da Tag foi adicionada ao now 1.0 Distribuição OCI-spec. Com isso, puxar pedido (#3427) foi aprovado para distribuição / distribuição que é o upstream para a imagem do registro. Tem um marco na versão 3.0, então esse pode ser um recurso que será adicionado no futuro.

Eu também tenho trabalhado em regclient que implementa a API de exclusão de tag e volta a enviar um manifesto vazio e excluí-lo. Para uma CLI, regclient inclui regctl que seria semelhante:

regctl tag rm registry:5000/repo:tag