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

4

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

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

Eu quero remover uma única tag sem necessariamente remover a imagem. Então, 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 ser usada, não a imagem.

Isso sugere uma solicitação da API assim:

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 do link e ele não parece se incomodar em verificar se é seguro remover um manuscrito . Estou faltando alguma coisa?

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

    
por Peter Westlake 06.09.2017 / 17:34

1 resposta

2

Atualmente, não há nenhuma API para excluir uma tag específica . Teoricamente, você pode enviar um manifesto novo (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.

Atualmente há uma solicitação de solicitação (# 2169) para renovar a API da tag, incluindo a opção de excluir Tag. Tem um marco da versão 2.7, então isso pode ser um recurso que será adicionado no futuro.

    
por 06.09.2017 / 18:09