CloudShell 内で Docker コンテナを構築して Amazon ECR リポジトリにプッシュする - AWS CloudShell

CloudShell 内で Docker コンテナを構築して Amazon ECR リポジトリにプッシュする

このチュートリアルでは、AWS CloudShell 内で Docker コンテナを定義して構築し、Amazon ECR リポジトリにプッシュする方法を示します。

前提条件

チュートリアルの手順

次のチュートリアルでは、CloudShell インターフェイスを使用して Docker コンテナを構築し、Amazon ECR リポジトリにプッシュする方法について説明します。

  1. ホームディレクトリに新しいフォルダを作成します。

    mkdir ~/docker-cli-tutorial
  2. 作成したフォルダに移動します。

    cd ~/docker-cli-tutorial
  3. 空の Dockerfile を作成します。

    touch Dockerfile
  4. テキストエディタ (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!" ]
  5. これで、Dockerfile を構築する準備が整いました。docker build を実行してコンテナを構築します。コンテナには、将来のコマンドで使用できるように、入力しやすい名前をタグ付けします。

    docker build --tag test-container .

    末尾のピリオド (.) を必ず含めます。

    AWS CloudShell 内で実行する Docker ビルドコマンドの画像。
  6. これで、コンテナをテストし、AWS CloudShell で正しく動作することを確認できます。

    docker container run test-container
    AWS CloudShell 内の Docker コンテナ実行コマンドの画像
  7. Docker コンテナが正常に動作することを確認したら、これを Amazon ECR リポジトリにプッシュする必要があります。既存の Amazon ECR リポジトリがある場合は、このステップをスキップできます。

    次のコマンドを実行して、このチュートリアル用の Amazon ECR リポジトリを作成します。

    ECR_REPO_NAME=docker-tutorial-repo aws ecr create-repository --repository-name ${ECR_REPO_NAME}
    AWS CloudShell 内で Amazon ECR リポジトリを作成するために使用するコマンドの画像
  8. 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}
    Docker の Amazon ECR サインイン認証情報の取得に使用するコマンドの画像。
    注記

    AWS_REGION 環境変数を CloudShell に設定していないか、他の AWS リージョンのリソースとやり取りする場合は、次のコマンドを実行します。

    AWS_REGION=<your-desired-region>
  9. イメージにターゲットの Amazon ECR リポジトリのタグを付け、そのリポジトリにイメージをプッシュします。

    docker tag test-container ${ECR_URL}/${ECR_REPO_NAME} docker push ${ECR_URL}/${ECR_REPO_NAME}
    イメージにターゲット Amazon ECR リポジトリのタグを付けるために使用するコマンドの画像。

    このチュートリアルを実行しようとしてエラーや問題が発生した場合は、このガイドの「トラブルシューティング」セクションを参照してください。

クリーンアップ

これで、Docker コンテナを Amazon ECR リポジトリに正常にデプロイしました。このチュートリアルで作成したファイルを AWS CloudShell 環境から削除するには、次のコマンドを実行します。

  • cd ~ rm -rf ~/docker-cli-tutorial
  • Amazon ECR リポジトリを削除します。

    aws ecr delete-repository --force --repository-name ${ECR_REPO_NAME}