ECRをざっくり理解する
ECRをざっくり文章で表現する
Amazon ECR(Elastic Container Registry)は、Dockerコンテナイメージを安全に保存・管理・取得できるフルマネージドなコンテナレジストリサービスです。ECSやEKSとの連携がスムーズで、CI/CDにも活用できます。
公式サイト:ECR
ECRをざっくり箇条書きで表現する
- Dockerイメージを保存・管理するサービス
- フルマネージドでスケーラブル
- ECSやEKSと簡単に連携可能
- セキュアなアクセス制御とスキャン機能
- CI/CDパイプラインに統合しやすい
ECRのユースケース(どんな時に使えるか)をざっくり
- 自分たちのコンテナイメージをAWS上に安全に保存しておきたいとき
- Fargate や ECS / EKS などでアプリケーションを動かすときに、そのイメージの保存場所として
- CI/CDツール(GitHub Actions や CodePipeline など)から自動でイメージをプッシュ・プルしたいとき
- 複数の開発者チームで共通のベースイメージを使いたいとき
- プライベート(非公開)なイメージを扱いたいとき
ECRを使う場合のAWS構成例
この構成では、開発者やCIツールが作成したDockerイメージをAmazon ECRに保存し、FargateやECS/EKSからそのイメージを使ってコンテナアプリケーションを実行します。保存されたイメージは本番環境でのデプロイに利用され、アプリはRDSやS3などのサービスとも連携できます。開発者PC(Dockerイメージ作成) | v AWS CLI / CIツール(GitHub Actionsなど) | v +-------------------+ | Amazon ECR | ← イメージを保存 +-------------------+ | v +-------------------+ | Amazon ECS/EKS | ← Fargateでも可 | (コンテナ実行) | +-------------------+ | v +-------------------+ | アプリケーション | |(Web APIなど) | +-------------------+ | v +-------------------+ | Amazon RDS / S3 | +-------------------+
各パーツの説明
- 開発者PC / CIツール: アプリケーションのソースコードからDockerイメージを作成します。
- Amazon ECR: 作成したDockerイメージを保存しておく場所(イメージの倉庫)です。
- Amazon ECS / Fargate / EKS: ECRにあるイメージを使ってコンテナを起動・実行します。
- アプリケーション: コンテナ内で動作するWebアプリやAPIなどのシステムです。
- Amazon RDS / S3: アプリケーションがデータを保存・取得するために利用する外部サービスです。
処理の流れ
- 開発者がDockerイメージを作成します。
- 作成したイメージをAmazon ECRにアップロード(プッシュ)します。
- FargateやECS/EKSがECRからイメージを取得(プル)してコンテナを実行します。
- コンテナ内のアプリケーションが起動し、ユーザーからのリクエストを処理します。
- 必要に応じて、RDSやS3と連携してデータを読み書きします。
この構成の特徴
- サーバーを意識せずに、コンテナアプリケーションを実行できます(Fargate使用時)。
- イメージを中央で一元管理できるため、開発と本番の差が少なくなります。
- CI/CDとの相性が良く、自動化されたデプロイが可能です。
- セキュリティスキャン機能により、脆弱性のあるイメージを検知できます。
- アクセス権限(IAM)によって、誰がイメージを使えるか細かく設定できます。
ECRと一緒によく使うAWSサービス
- AWS Fargate: ECRにあるコンテナイメージを使って、サーバーレスでコンテナを実行できます。
- Amazon ECS: コンテナを管理・実行するサービス。ECRと連携してイメージを動かします。
- Amazon EKS: Kubernetesを使いたいときの選択肢。こちらもECRからイメージを取り込みます。
- AWS CodePipeline / CodeBuild: CI/CDを自動化するサービス。コードの変更をトリガーにして、ECRにイメージを自動でアップできます。
- AWS IAM: ECRにアクセスできるユーザーやサービスを管理するために使います(セキュリティ管理)。
- AWS CloudWatch: コンテナのログやメトリクス(動作状況)を確認できます。
- Amazon S3: バックアップ用ファイルや静的コンテンツなど、アプリで使う他のデータの保存先として一緒に使われます。
ECRを使う際の注意点
- プライベートなDockerイメージの保存場所なので、アクセス権の設定に注意する
- イメージをプッシュ/プルするには、AWS CLIでログインが必要
- 自動で不要なイメージが削除されないので、古いイメージは自分で管理する
- ストレージ使用量に応じて課金されるので、使わないイメージは削除がおすすめ
- イメージのバージョン管理(タグ付け)をしておかないと、どれが最新か分かりにくくなる
- 異なるAWSリージョンで使う場合、リージョンごとにECRリポジトリが必要
- コンテナを動かすサービス(Fargate や ECS)と連携して使うのが基本
- ビルドしたイメージをECRにプッシュするには、Dockerの知識も必要