イメージをAmazon ECRにプッシュするとき、タグがレポ内にすでに存在する場合、古いイメージはレジストリ内に残りますが、タグなし状態になります。タグなしイメージをAWS ECRコンテナレジストリから削除する方法
ドッカーがimage/haha:1.0.0
を2回押すと(何かが変更された場合)、最初のイメージはAWS ECR
からタグなしになります。
タグなしイメージからすべてのレジストリを安全にクリーンアップする方法はありますか?
イメージをAmazon ECRにプッシュするとき、タグがレポ内にすでに存在する場合、古いイメージはレジストリ内に残りますが、タグなし状態になります。タグなしイメージをAWS ECRコンテナレジストリから削除する方法
ドッカーがimage/haha:1.0.0
を2回押すと(何かが変更された場合)、最初のイメージはAWS ECR
からタグなしになります。
タグなしイメージからすべてのレジストリを安全にクリーンアップする方法はありますか?
私は実際にそれは何やっていることであるaws cli
aws ecr describe-repositories --output text | awk '{print $5}' | while read line; do aws ecr list-images --repository-name $line --filter tagStatus=UNTAGGED --query 'imageIds[*]' --output text | while read imageId; do aws ecr batch-delete-image --repository-name $line --image-ids imageDigest=$imageId; done; done
を使用して1行のソリューションを偽造:
tagStatus=UNTAGGED
batch-delete-image
あなたはループせずに、単一の要求内のすべての画像を削除することができます。
IMAGES_TO_DELETE=$(aws ecr list-images --region $ECR_REGION --repository-name $ECR_REPO --filter "tagStatus=UNTAGGED" --query 'imageIds[*]' --output json)
aws ecr batch-delete-image --region $ECR_REGION --repository-name $ECR_REPO --image-ids "$IMAGES_TO_DELETE" || true
まず、それがタグ付けされた画像のリストを取得し、JSON形式で:
[ {"imageDigest": "sha256:..."}, {"imageDigest": "sha256:..."}, ... ]
次に、そのリストをbatch-image-delete
に送信します。
最後に|| true
は、タグの付いていない画像がない場合にエラーコードを避けるために必要です。
このECRでは、ライフサイクルポリシー(https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html)がサポートされているため、タグなしの画像を自動的に削除できます。コンソール
を使用してライフサイクルポリシーのプレビューを設定
はhttps://console.aws.amazon.com/ecs/でアマゾンECSコンソールを開きます。
ライフサイクルポリシープレビューを実行するリポジトリ を含む領域をナビゲーションバーから選択します。
ナビゲーションペインで、[リポジトリ]を選択し、リポジトリを選択します。
すべてのリポジトリ:リポジトリ名ページで、ドライラン ライフサイクルルールを追加を選択します。
は、あなたのライフサイクルポリシールールについては、以下の詳細を入力します。
は、ルールの優先順位については、ルールの優先順位の番号を入力します。
ルールの説明に、ライフサイクルポリシー ルールの説明を入力します。
イメージステータスでは、[タグ付き]または[タグなし]を選択します。
イメージステータスにタグ付けを指定した場合、タグ接頭辞リストの には、ライフサイクルポリシーで アクションを取るイメージタグのリストをオプションで指定できます。 Untaggedを指定した場合、この フィールドは空でなければなりません。
一致条件では、カウントタイプ、カウント数、および カウントユニット(該当する場合)の値を選択します。
保存を選択
手順5-7を繰り返して、ライフサイクルポリシールールを作成します。
ライフサイクルポリシープレビューを実行するには、[保存して結果をプレビューする]を選択します。
プレビュー画像の結果で、ライフサイクルの影響を確認してください ポリシープレビュー
プレビュー結果に問題がなければ、 ライフサイクルポリシーとして適用を選択し、指定した ルールのライフサイクルポリシーを作成します。ここから
: https://docs.aws.amazon.com/AmazonECR/latest/userguide/lpp_creation.html
回答に記載されている手順を試しましたが、古い画像は削除されません。ポリシーを正常に実行すると、削除する予定のすべてのイメージが正しく表示されますが、ポリシーを適用すると実際には削除されません。私が行方不明のものは何ですか? – Broadwell
私はあなたがどのバージョンを使用しない、 '--filter' オプションを持っていないのですか? (私はaws-cli/1.10.39を持っています) – Dimitris
更新:v1.11.44はフィルタをサポートしています – Dimitris