での Amazon エラスティックコンテナレジストリサービスの使用 AWS Cloud9 - AWS Cloud9

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

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

での Amazon エラスティックコンテナレジストリサービスの使用 AWS Cloud9

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

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

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

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

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

前提条件

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

1. Dockerfile の作成

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

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

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

    注記

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

IDE を使用して Docker ファイルを編集する AWS Cloud9

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

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

  1. 空の Docker ファイルを IDE で直接開きます。 AWS Cloud9

  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 です。実行命令は、パッケージキャッシュを更新します。ウェブサーバー用のいくつかのソフトウェアがインストールされてから、「Hello World!」 ウェブサーバーのドキュメントルートに書き込まれます。EXPOSE の命令はコンテナ上のポート 80 を公開し、CMD の命令はウェブサーバーを起動します。

  3. Dockerfile を保存します。

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

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

Dockerfile からイメージをビルドする
  1. Dockerfile を含むディレクトリに移動するには、Docker のインスタンスと統合された Docker CLI または 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 CLI AWS でエクスプローラーを使用すると、次の操作を実行できます。

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

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

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

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

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

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

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

    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

タグ付けされたイメージがリポジトリに正常にアップロードされたら、[エクスプローラ] タブから [Refresh Explorer] を選択して AWS Toolkit を更新します AWS 。すると AWS Cloud9 IDE の「 AWS エクスプローラー」メニューに表示されます。

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 リポジトリからのイメージの削除

AWS Cloud9 IDE からイメージを削除するには 2 つの方法があります。1 つ目の方法は、 AWS エクスプローラーを使用することです。

  1. AWS エクスプローラーから 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 インスタンスからのリポジトリの削除

AWS Cloud9 IDE からリポジトリを削除するには 2 つの方法があります。1 つ目の方法は、 AWS エクスプローラーを使用することです。

  1. AWS エクスプローラーから ECR メニューを展開します。

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

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

CLI から Amazon ECR リポジトリを削除する AWS
  • リポジトリは、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 } }