web-dev-qa-db-ja.com

プライベート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)

画像を削除せずに1つのタグを削除したい。したがって、タグ2を削除すると、他に何も参照しないため、画像を削除しても問題ありません。しかし、タグ1を削除すると、画像ではなく、そのタグのみが移動します。

これは、次のようなAPIリクエストを示唆しています。

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

しかし、それによって404が得られます。代わりに、マニフェストを削除する必要があります。つまり、別のタグで使用されていないことを確認するすべての作業を実行する必要があります。

私は https://github.com/fraunhoferfokus/deckschrubber のソースを確認しましたが、原稿を削除しても安全であることを確認しても問題はないようです。何か不足していますか?

これを行うより良い方法はありますか?そうでない場合、なぜそうではなく、修正される可能性がありますか?

7
Peter Westlake

現在 特定のタグを削除するAPIなし があります。理論的には、新しい(空の場合もある)マニフェストを既存のタグにプッシュしてから削除できます。それ以外の場合は、クリーンアップルーチンのすべてのタグとマニフェストを追跡して、何を削除しても安全かを識別します。

現在、タグを削除するオプションを含め、タグAPIを改良するための プルリクエスト(#2169) があります。それは2.7リリースのマイルストーンを持っているので、これは将来追加される機能かもしれません。

5
BMitch