今回は、ECRを利用して自作のdockerイメージをFargate上で起動してみましょう。
[学習フェーズ]
ECR
Amazon ECR(Elastic Container Registry) は、AWSが提供するDockerコンテナイメージの保存・管理サービスです。
特徴 | 説明 |
---|---|
マネージド | インフラの運用不要。高可用かつスケーラブル |
セキュア | IAMと統合され、アクセス制御が細かく可能 |
AWS連携 | ECS / EKS / CodePipeline / CodeBuildと接続 |
プライベート/パブリック | 非公開利用だけでなく、公開リポジトリの作成も可能 |
ECRを利用する際の流れ
Step 1 Dockerfile作成 & イメージビルド @ローカルPC
Step 2 ECRリポジトリを作成 @マネジメントコンソール
Step 3 ECRにログイン(認証) @ローカルPC(AWS CLI )
Step 4 Dockerイメージにタグを付ける @ローカルPC
Step 5 ECRにpush @ローカルPC
Step 6 ECSにてECR内のイメージを指定、起動 @マネジメントコンソール
パブリックリポジトリとプライベートリポジトリ
プライベートECRリポジトリとは?
- アクセスできるのは同じAWSアカウント(または明示的に許可したIAMユーザー・ロール)のみ
- 外部の誰かがpullすることはできない
- セキュアなコンテナ管理が可能
- Fargate や ECS も「IAM認証された状態」で pull するので問題なく利用可能
パブリックECRリポジトリとは?
- 公開後は誰でもpullできるため、機密情報を含めてはいけない
- 誰でもpull可能(認証不要)な公開用Dockerイメージの保管場所
- 世界中のユーザーがアクセス可能で、オープンソースの配布に適している
- プライベートと異なり、IAM認証やVPCエンドポイントは不要
[実践フェーズ]
今回は以下のアプリケーションをFargate上で作成しましょう。
[手順]
1. 自作の index.html
を含んだnginxイメージをECRにpush
2. AWS Fargate(ECS)でコンテナを起動
3. Webブラウザから「Hello from Fargate!」を確認!
事前準備
Dockerfile
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
index.html
<!DOCTYPE html>
<html>
<head>
<title>My ECS Site</title>
</head>
<body>
<h1>Hello from Fargate!</h1>
<p>このページは自作のDockerイメージから提供されています。</p>
</body>
</html>
上記内容でビルドしておく
ECR作成・push
プライベートリポジトリを作成、ローカル環境で作成したイメージをECRへpush
pushコマンドは、ECR上の右上「プッシュコマンドを表示」に記載

Fargaetにて起動確認
- コンテナイメージを上記でPUSHしたECR URIに設定
- ポートは80番
- http://[パブリックIP]/ にてWebページを確認で完了