はじめに
AWSでDockerファイルを使用してコンテナイメージを実行する場合、ECR (Elastic Container Registry) にアップロードされたイメージを利用します。
今回は、テスト用のファイルを準備し、ローカル環境でDockerイメージをビルドしてECRにプッシュする手順を解説します。
この記事は、将来の自分への備忘録として、学んだ内容を整理したものです。
ECRについて
Amazon Elastic Container Registry (ECR) は、完全マネージド型のコンテナレジストリサービスです。
引用画像:https://zenn.dev/yoshii0110/articles/1de56128d7be2c
さらに詳しく学習されたい方は、AWSの公式サイトをご参照ください。
テスト用ファイルの準備
1. Dockerfile
まず、AWS Lambdaで実行可能なDockerイメージを作成します。以下は、シンプルなPythonアプリケーションを例にしたDockerfileです。
# AWS Lambdaの公式Pythonベースイメージ
FROM public.ecr.aws/lambda/python:3.9
# 必要なライブラリをインストール
COPY requirements.txt .
RUN pip install -r requirements.txt
# アプリケーションコードをコンテナにコピー
COPY app.py .
# Lambda関数のエントリーポイントを指定
CMD ["app.lambda_handler"]
2. app.py
app.py
には、Lambda関数のエントリーポイントを定義します。以下はその例です。
def lambda_handler(event, context):
return {"statusCode": 200, "body": "Hello, Lambda with Docker!"}
3. requirements.txt
依存関係を管理するための requirements.txt
ファイルには、必要なPythonライブラリを記載します。
flask==2.3.2
requests==2.28.1
このファイルは、Dockerfile内の COPY
と RUN
ステップで使用されます。
Dockerイメージのビルド
以下のコマンドを実行して、Dockerイメージをビルドします。
docker build -t lambda-docker .
コマンド実行例
以下は、実行時の例です。
➜ test git:(honda-branch) ✗ docker build -t lambda-container .
[+] Building 6.5s (4/8) docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 432B 0.0s
=> [internal] load metadata for public.ecr.aws/lambda/python:3.9 1.1s
・・・
・・・
・・・
What's next:
View a summary of image vulnerabilities and recommendations → docker scout quickview
ポイント:
-t lambda-docker
でイメージに名前を付けています。- ビルドに成功すると、Dockerイメージがローカルに作成されます。
ECRリポジトリの作成
AWS CLIを使用して、ECRリポジトリを作成します。
aws ecr create-repository --repository-name lambda-container
実行後、以下のようにリポジトリが作成されていることを確認できます。
ECRにDockerイメージをプッシュしてみた
AWS CLIを利用して、DockerイメージをECRにプッシュする手順を紹介します。
普段はマネジメントコンソールで生成されるコマンドを使用していますが、ここでは簡単に一例をご紹介します。
1. Dockerレジストリにログイン
AWS CLIを使って認証トークンを取得し、DockerクライアントをAWS ECRレジストリにログインさせます。
aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com
2. Dockerイメージのビルド
Dockerfileを使用して、コンテナイメージをビルドします。
docker build -t <IMAGE_NAME> .
3. Dockerイメージにタグを付与
作成したDockerイメージにタグを付け、ECRリポジトリへプッシュできるようにします。
docker tag <IMAGE_NAME>:latest <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<IMAGE_NAME>:latest
4. DockerイメージをECRにプッシュ
タグ付けしたイメージをAWS ECRにプッシュします。
docker push <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<IMAGE_NAME>:latest
プッシュが成功すると、以下のようにECRにイメージが登録されていることが確認できます。
まとめ
この記事では、AWS ECRを利用してDockerイメージを管理する手順を解説しました。
ECRを活用することで、コンテナイメージを効率的に保存・管理できる点が大きなメリットです。
次回は、このコンテナイメージをAWS Lambdaで実行し、サーバーレス環境で動かす方法について解説します!