2016-12-03 32 views
7

イメージをAmazon ECRにプッシュするとき、タグがレポ内にすでに存在する場合、古いイメージはレジストリ内に残りますが、タグなし状態になります。タグなしイメージをAWS ECRコンテナレジストリから削除する方法

ドッカーがimage/haha:1.0.0を2回押すと(何かが変更された場合)、最初のイメージはAWS ECRからタグなしになります。

タグなしイメージからすべてのレジストリを安全にクリーンアップする方法はありますか?

答えて

4

私は実際にそれは何やっていることである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
7

あなたはループせずに、単一の要求内のすべての画像を削除することができます。

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は、タグの付いていない画像がない場合にエラーコードを避けるために必要です。

+0

私はあなたがどのバージョンを使用しない、 '--filter' オプションを持っていないのですか? (私はaws-cli/1.10.39を持っています) – Dimitris

+0

更新:v1.11.44はフィルタをサポートしています – Dimitris

1

この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

+0

回答に記載されている手順を試しましたが、古い画像は削除されません。ポリシーを正常に実行すると、削除する予定のすべてのイメージが正しく表示されますが、ポリシーを適用すると実際には削除されません。私が行方不明のものは何ですか? – Broadwell

関連する問題