2017-07-14 10 views
0

私のCIは、1つのタグの下で画像をドッカーのレジストリにプッシュします。私は定期的に古い未使用の画像を消去するスクリプトを持っています。タグ内のダイジェストを繰り返し処理し、レジストリAPIのDELETEを呼び出します(レジストリファイルシステムのファイルを繰り返します)。ガベージコレクトすべてのブロブをした後ドッカーレジストリ - ファイルシステムからマニフェストを削除する

dir="${REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY}/docker/registry/v2/repositories/test/_manifests/tags/5.3/index/sha256/" 
oldManifests=$(ls -t $dir | tail -n +2 ; done) 
for hash in $oldManifests 
do 
    curl -L -X DELETE http://localhost:5000/v2/test/manifests/sha256:$hash 
done 

/bin/registry garbage-collect /etc/docker/registry/config.yml 

は_manifests /タグ/ 5.3 /インデックス/ SHA256の/の下にディレクトリを削除されていませんが。どうして?手動で削除するのは安全ですか?

答えて

0

はい、手動で削除することは安全です。


あなたのケースでは、タグはバージョン管理されており、ls -tを使用しても問題ありません。 「最新の」タグの場合は、.../_manifests/tags/5.3/current/link(プレフィックスを外したsha256:)の内容を確認して、先にプッシュした画像をダウングレードするときに新しい「最新」として古いマニフェストをプッシュすることができます。

私は、タグの付いていないパージするスクリプトを持っている(あなたの場合)またはレジストリから画像をタグ付け: https://github.com/ricardobranco777/clean_registry.sh

それはタグを削除するには、サポートしないため、私はAPIを使用していません。

+0

Dockerハブで利用できるPythonスクリプトとDocker画像を作成しました:https://github.com/ricardobranco777/clean_registry –

関連する問題