CloudShell 内で Docker コンテナを構築して Amazon ECR リポジトリにプッシュする
このチュートリアルでは、AWS CloudShell 内で Docker コンテナを定義して構築し、Amazon ECR リポジトリにプッシュする方法を示します。
前提条件
コンテナを作成して Amazon ECR リポジトリにプッシュするためのアクセス許可が必要です。Amazon ECR のリポジトリの詳細については、「Amazon ECR ユーザーガイド」の「Amazon ECR プライベートリポジトリ」を参照してください。Amazon ECR にイメージをプッシュするために必要なアクセス許可の詳細については、「Amazon ECR ユーザーガイド」の「イメージをプッシュするために必要な IAM アクセス許可」を参照してください。
チュートリアルの手順
次のチュートリアルでは、CloudShell インターフェイスを使用して Docker コンテナを構築し、Amazon ECR リポジトリにプッシュする方法について説明します。
ホームディレクトリに新しいフォルダを作成します。
mkdir ~/docker-cli-tutorial
作成したフォルダに移動します。
cd ~/docker-cli-tutorial
空の Dockerfile を作成します。
touch Dockerfile
テキストエディタ (
nano Dockerfile
など) を使用し、ファイルを開いて次の内容を貼り付けます。# Dockerfile # Base this container on the latest Amazon Linux version FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install the cowsay binary RUN dnf install --assumeyes cowsay # Default entrypoint binary ENTRYPOINT [ "cowsay" ] # Default argument for the cowsay entrypoint CMD [ "Hello, World!" ]
これで、Dockerfile を構築する準備が整いました。
docker build
を実行してコンテナを構築します。コンテナには、将来のコマンドで使用できるように、入力しやすい名前をタグ付けします。docker build --tag test-container .
末尾のピリオド (
.
) を必ず含めます。これで、コンテナをテストし、AWS CloudShell で正しく動作することを確認できます。
docker container run test-container
Docker コンテナが正常に動作することを確認したら、これを Amazon ECR リポジトリにプッシュする必要があります。既存の Amazon ECR リポジトリがある場合は、このステップをスキップできます。
次のコマンドを実行して、このチュートリアル用の Amazon ECR リポジトリを作成します。
ECR_REPO_NAME=docker-tutorial-repo aws ecr create-repository --repository-name ${ECR_REPO_NAME}
Amazon ECR リポジトリを作成したら、これに Docker コンテナをプッシュできます。
次のコマンドを実行して、Docker の Amazon ECR サインイン認証情報を取得します。
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) ECR_URL=${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com aws ecr get-login-password | docker login --username AWS --password-stdin ${ECR_URL}
注記
AWS_REGION 環境変数を CloudShell に設定していないか、他の AWS リージョンのリソースとやり取りする場合は、次のコマンドを実行します。
AWS_REGION=<your-desired-region>
イメージにターゲットの Amazon ECR リポジトリのタグを付け、そのリポジトリにイメージをプッシュします。
docker tag test-container ${ECR_URL}/${ECR_REPO_NAME} docker push ${ECR_URL}/${ECR_REPO_NAME}
このチュートリアルを実行しようとしてエラーや問題が発生した場合は、このガイドの「トラブルシューティング」セクションを参照してください。
クリーンアップ
これで、Docker コンテナを Amazon ECR リポジトリに正常にデプロイしました。このチュートリアルで作成したファイルを AWS CloudShell 環境から削除するには、次のコマンドを実行します。
cd ~ rm -rf ~/docker-cli-tutorial
Amazon ECR リポジトリを削除します。
aws ecr delete-repository --force --repository-name ${ECR_REPO_NAME}