ECR

AWS のマネージドコンテナレジストリで、Docker イメージを安全に保存 / 管理 / 配信する

AWSコンテナ

ECR とは

ECR (Elastic Container Registry) は、AWS のマネージドコンテナレジストリで、Docker イメージを安全に保存・管理・配信する。ECSEKSLambda (コンテナイメージ) からイメージをプルする際に使用する。Docker Hub のプライベート版に相当する。

Docker Hub との比較

Docker Hub との主な違いを以下に比較する。

観点ECRDocker Hub
ホスティングAWS マネージドSaaS
認証IAMDocker ID
プルレート制限アカウント種別による制限なし未認証 100 プル/6 時間、無料の Personal は 200 プル/6 時間 (2026 年 8 月時点)
脆弱性スキャン基本 (ECR ネイティブ) と拡張 (Amazon Inspector)Docker Scout (無料の Personal は 1 リポジトリまで)
コストストレージ + データ転送無料枠あり

基本操作

基本操作の例を示す。

# ECR にログイン
aws ecr get-login-password --region ap-northeast-1 | \
  docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com

# イメージのビルド・タグ付け・プッシュ
docker build -t myapp .
docker tag myapp:latest 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:v1.0.0
docker push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:v1.0.0

ライフサイクルポリシー

古いイメージを自動削除してストレージコストを抑える。

ルール説明
タグなしイメージを 7 日後に削除ビルド中間イメージの自動クリーンアップ
最新 10 個のイメージのみ保持古いバージョンを自動削除

脆弱性スキャン

スキャンには基本 (basic) と拡張 (enhanced) の 2 方式がある。基本スキャンは AWS ネイティブの実装が CVE データベースを参照するもので、検出対象は OS パッケージのみ。頻度は手動かプッシュ時 (ScanOnPush: true) で、料金は ECR 側に含まれる。拡張スキャンは Amazon Inspector との統合で、OS に加えてプログラミング言語のパッケージ (アプリケーションの依存関係) も対象になり、プッシュ時スキャンと継続スキャンを選べる。新しい CVE が登録されたときに既存イメージが再スキャンされるのは拡張スキャンだけなので、依存ライブラリの脆弱性を追いたいのに基本スキャンのままで「検出ゼロ」と誤解するのがよくある落とし穴。

イメージタグ戦略

イメージタグ戦略の例を示す。

# ❌ latest のみ → どのバージョンがデプロイされているか不明
docker tag myapp:latest ...

# ✅ Git SHA + セマンティックバージョン
docker tag myapp:latest .../myapp:v1.2.3
docker tag myapp:latest .../myapp:abc1234

ECR Public

パブリックなコンテナイメージを公開する場合は ECR Public Gallery を使用する。OSS プロジェクトやベースイメージの配布に適している。

さらに掘り下げるなら関連書籍が参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事