での Amazon ECRサービスの使用 AWS Cloud9 - AWS Cloud9

AWS Cloud9 は、新しいお客様では利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

での Amazon ECRサービスの使用 AWS Cloud9

Amazon Elastic Container Registry (Amazon ECR) サービスには、 の AWS Explorer から直接アクセスできます AWS Cloud9 IDE。Amazon を使用してECR、プログラムイメージを Amazon ECRリポジトリにプッシュできます。使用を開始するには、次のステップに従います。

  1. イメージの構築に必要な情報を含む Dockerfile を作成します。

  2. その Dockerfile からイメージをビルドし、処理のためにイメージにタグを付けます。

  3. Amazon ECRインスタンス内にあるリポジトリを作成します。

  4. リポジトリにタグ付けされたイメージをプッシュします。

前提条件

AWS Toolkit for の Amazon ECR機能を使用する前に AWS Cloud9、まずこれらの前提条件を満たしていることを確認してください。これらの前提条件は、 for AWS Cloud9 Amazon AWS Cloud9 IDEEC2環境にプリインストールされており、Amazon にアクセスするために必要ですECR。

1. Dockerfile の作成

Docker は Dockerfile というファイルを使用して、リモートリポジトリにプッシュおよび保存できるイメージを定義します。ECR リポジトリにイメージをアップロードする前に、Dockerfile を作成し、その Dockerfile からイメージを構築します。

Dockerfile の作成
  1. Dockerfile を保存するディレクトリに移動するには、 内の左側のナビゲーションバーでツリーの切り替えオプションを選択します AWS Cloud9 IDE。

  2. Dockerfile という名前の新しいファイルを作成します。

    注記

    AWS Cloud9 IDE ファイルタイプまたはファイル拡張子を選択するように求められる場合があります。この場合、プレーンテキスト を選択します。 AWS Cloud9 IDE には「dockerfile」拡張子があります。ただし、使用することは推奨されていません。これは、拡張機能が特定のバージョンの Docker または他の関連アプリケーションと競合する可能性があるためです。

を使用した Dockerfile の編集 AWS Cloud9 IDE

Dockerfile にファイル拡張子がある場合は、そのファイルのコンテキスト (右クリック) メニューを開き、ファイル拡張子を削除します。拡張子を持つ Dockerfile は、Docker の特定のバージョンやその他の関連アプリケーションと競合する可能性があります。

Dockerfile からファイル拡張子を削除したら、次の操作を行います。

  1. 空の Dockerfile を で直接開きます AWS Cloud9 IDE。

  2. 次の例の内容を Dockerfile にコピーします。

    例 Dockerfile イメージテンプレート
    FROM ubuntu:22.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    これは Ubuntu 22.04 イメージを使用する Dockerfile です。RUN 手順では、パッケージキャッシュを更新します。ウェブサーバー用のいくつかのソフトウェアがインストールされてから、「Hello World!」 ウェブサーバーのドキュメントルートに書き込まれます。EXPOSE 命令はコンテナ上のポート 80 を公開し、CMD命令はウェブサーバーを起動します。

  3. Dockerfile を保存します。

2. Dockerfile からイメージをビルドする

作成した Dockerfile には、プログラムのイメージを構築するために必要な情報が含まれています。Amazon ECRインスタンスにそのイメージをプッシュする前に、まずイメージを構築します。

Dockerfile からイメージをビルドする
  1. Dockerfile を含むディレクトリに移動するには、Docker CLIまたは Docker のインスタンスとCLI統合された を使用します。

  2. Dockerfile で定義されているイメージをビルドするには、Dockerfile と同じディレクトリから Docker ビルドコマンドを実行します。

    docker build -t hello-world .
  3. イメージが正しく作成されたことを検証するには、Docker イメージ コマンドを実行します。

    docker images --filter reference=hello-world

    出力は次のとおりです。

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. Ubuntu 22.04 に基づいて新しくビルドされたイメージを実行するには、echo コマンドを使用します。

    注記

    このステップは、イメージの作成やプッシュには必要ありません。ただし、プログラムイメージの実行時の動作を確認できます。

    FROM ubuntu:22.04 CMD ["echo", "Hello from Docker in Cloud9"]

    次に Dockerfile を実行して構築します。このコマンドは、Dockerfile と同じディレクトリから実行する必要があります。

    docker build -t hello-world . docker run --rm hello-world

    出力は次のとおりです。

    Hello from Docker in Cloud9

    Docker run コマンドの詳細については、Docker ウェブサイトの「Docker run reference」を参照してください。

3. 新しいリポジトリの作成

Amazon ECRインスタンスにイメージをアップロードするには、イメージを保存できる新しいリポジトリを作成します。

新しい Amazon ECRリポジトリの作成
  1. ナビゲーションバーから AWS Cloud9 IDE、AWS ツールキットアイコン を選択します。

  2. AWS Explorer メニューを拡張します。

  3. AWS リージョン に関連付けられているデフォルトを見つけます AWS アカウント。次に、これを選択して、 経由のサービスのリストを表示します AWS Cloud9 IDE。

  4. コンテキスト (右クリック) メニューを開きECR新しいリポジトリの作成プロセスを開始します。次に、[Create Repository] (リポジトリの作成) を選択します。

  5. プロセスを完了するには、プロンプトに従います。

  6. プロセスが完了したら、 AWS Explorer メニューの ECRセクションから新しいリポジトリにアクセスできます。

4. イメージのプッシュ、プル、削除

Dockerfile からイメージを構築し、リポジトリを作成したら、イメージを Amazon ECRリポジトリにプッシュできます。さらに、 Docker と で AWS Explorer を使用すると AWS CLI、以下を実行できます。

  • イメージをリポジトリからプルします。

  • リポジトリに保存されているイメージを削除します。

  • リポジトリを削除します。

デフォルトレジストリでの Docker の認証

Amazon インスタンスECRと Docker インスタンス間でデータを交換するには、認証が必要です。レジストリで Docker を認証するには

  1. 内でターミナルを開きます AWS Cloud9 IDE。

  2. get-login-password メソッドを使用してプライベートECRレジストリを認証し、リージョンと AWS アカウント ID を入力します。

    aws ecr get-login-password \ --region <region> \ | docker login \ --username AWS \ --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
    重要

    前述のコマンドで、regionAWS_account_id を、 AWS アカウントに固有の情報に置き換えます。有効な region の値は us-east-1 です。

イメージへのタグ付けとレポジトリへのプッシュ

インスタンス で Docker を認証したら AWS、イメージをリポジトリにプッシュします。

  1. docker images コマンドを使用して、ローカルに保存したイメージを表示し、タグ付けするイメージを特定します。

    docker images

    出力は次のとおりです。

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. Docker コマンドを使用してイメージをビルドします。

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. リポジトリに Docker プッシュコマンドでタグ付けされたイメージをプッシュします。

    重要

    ローカルリポジトリの名前が AWS Amazon EC2リポジトリと同じであることを確認します。この例では、両方のリポジトリの名前が「hello-world」である必要があります。Docker によるイメージのプッシュの詳細については、「Docker イメージをプッシュする」を参照してください。

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    出力は次のとおりです。

    The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774

タグ付きイメージがリポジトリに正常にアップロードされたら、 AWS Explorer タブから Refresh Explorer を選択して AWS Toolkit を更新します。その後、 の AWS Explorer メニューに表示されます AWS Cloud9 IDE。

Amazon からイメージをプルする ECR
  • イメージは、Docker タグコマンドのローカルインスタンスにプルできます。

    docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    出力は次のとおりです。

    azonaws.com/hello-world:latest latest: Pulling from hello-world Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
Amazon ECRリポジトリからイメージを削除する

からイメージを削除する方法は 2 つあります AWS Cloud9 IDE。最初の方法は AWS Explorer を使用することです。

  1. AWS Explorer から、ECRメニューを展開します。

  2. イメージを削除するリポジトリを展開します。

  3. 削除するイメージに関連付けられているイメージタグのコンテキストメニュー (右クリック) を開きます。

  4. そのタグに関連付けられているすべての保存されたイメージを削除するには、[タグの削除...] を選択します。

を使用したイメージの削除 AWS CLI
  • AWS ecr batch-delete-image コマンドを使用して、リポジトリからイメージを削除することもできます。

    aws ecr batch-delete-image \ --repository-name hello-world \ --image-ids imageTag=latest

    出力は次のとおりです。

    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Amazon ECRインスタンスからリポジトリを削除する

リポジトリを から削除する方法は 2 つあります AWS Cloud9 IDE。最初の方法は Explorer AWS を使用することです。

  1. AWS Explorer から、ECRメニューを展開します。

  2. 削除するリポジトリのコンテキスト (右クリック) メニューを開きます。

  3. [Delete Repositor...] (リポジトリを削除...) を選択します。

から Amazon ECRリポジトリを削除する AWS CLI
  • リポジトリは、AWS ecr delete-repository コマンドで削除できます。 

    注記

    通常、まずリポジトリに含まれるイメージを削除しないと、リポジトリを削除することはできません。ただし、--force フラグを追加すると、リポジトリとそのすべてのイメージを 1 ステップで削除できます。

    aws ecr delete-repository \ --repository-name hello-world \ --force

    出力は次のとおりです。

    --repository-name hello-world --force { "repository": { "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", "registryId": "922327013870", "imageTagMutability": "MUTABLE", "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", "repositoryName": "hello-world", "createdAt": 1664469874.0 } }