

 AWS Cloud9 は新規顧客には利用できなくなりました。 AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。[詳細はこちら](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# IDE での Amazon ECR AWS Cloud9 の使用
<a name="ecr"></a>

Amazon Elastic Container Registry (Amazon ECR) は、安全でスケーラブルな AWS マネージドコンテナレジストリサービスです。 AWS Toolkit Explorer から複数の Amazon ECR サービス関数にアクセスできます。
+ リポジトリの作成
+ リポジトリまたはタグ付けされたイメージの AWS App Runner サービスの作成。
+ イメージタグおよびリポジトリの URI または ARN にアクセスする。
+ イメージタグとリポジトリを削除する。

CLI やその他のプラットフォームをインストールすることで、 AWS Cloud9 コンソールから Amazon ECR AWS 関数の全範囲にアクセスすることもできます。

Amazon ECR の詳細については、Amazon Elastic Container Registry ユーザーガイドの「[Amazon ECR とは?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)」を参照してください。

## 前提条件
<a name="prereqs-awstoolkit-vscode-ecr"></a>

以下は、 AWS Cloud9 Amazon EC2 環境の AWS Cloud9 IDE にプリインストールされています。IDE から Amazon ECR AWS Cloud9 サービスにアクセスするために必要です。

### IAM 認証情報
<a name="create-an-iam-user"></a>

 AWS コンソールで作成して認証に使用した IAM ロール。IAM の詳細については、「[AWS Identity and Access Management ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/)」を参照してください。

### [Docker の設定]
<a name="create-an-iam-user"></a>

Docker は Amazon AWS Cloud9 Amazon EC2 AWS Cloud9 環境の IDE にプリインストールされています。Docker の詳細については、「[Install Docker Engine](https://docs.docker.com/engine/install/)」を参照してください。

### AWS CLI バージョン 2 の設定
<a name="create-an-iam-user"></a>

AWS CLI バージョン 2 は、 AWS Cloud9 Amazon EC2 AWS Cloud9 環境の IDE にプリインストールされています。 AWS CLI バージョン 2 の詳細については、[「CLI バージョン AWS 2 のインストール、更新、アンインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

**Topics**
+ [前提条件](#prereqs-awstoolkit-vscode-ecr)
+ [IDE での Amazon ECR AWS Cloud9 の使用](ecr-working.md)

# での Amazon ECR サービスの使用 AWS Cloud9
<a name="ecr-working"></a>

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

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

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

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

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

**Topics**
+ [前提条件](#prereqs-vscode-ecr)
+ [1. Dockerfile の作成](#dockerfile-ecr-cloud9toolkit)
+ [2. Dockerfile からイメージをビルドする](#build-docker-image)
+ [3. 新しいリポジトリの作成](#create-repository)
+ [4. イメージのプッシュ、プル、削除](#push-image)

## 前提条件
<a name="prereqs-vscode-ecr"></a>

 AWS Toolkit for の Amazon ECR 機能を使用する前に AWS Cloud9、まずこれらの[前提条件](ecr.md#prereqs-awstoolkit-vscode-ecr)を満たしていることを確認してください。これらの前提条件は、 AWS Cloud9 Amazon EC2 AWS Cloud9 環境の IDE にプリインストールされており、Amazon ECR にアクセスするために必要です。

## 1. Dockerfile の作成
<a name="dockerfile-ecr-cloud9toolkit"></a>

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

**Dockerfile の作成**

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

1. **Dockerfile** という名前の新しいファイルを作成します。
**注記**  
AWS Cloud9 IDE では、ファイルタイプまたはファイル拡張子を選択するように求められる場合があります。これが発生した場合は、**plaintext**. AWS Cloud9 IDE に「dockerfile」拡張子が付いていることを選択します。ただし、使用することは推奨されていません。これは、拡張機能が特定のバージョンの Docker または他の関連アプリケーションと競合する可能性があるためです。

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

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

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

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

1. 次の例の内容を Dockerfile にコピーします。  
**Example 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\$1」 ウェブサーバーのドキュメントルートに書き込まれます。**EXPOSE** の命令はコンテナ上のポート 80 を公開し、**CMD** の命令はウェブサーバーを起動します。

1. Dockerfile を保存します。

## 2. Dockerfile からイメージをビルドする
<a name="build-docker-image"></a>

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

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

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

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

   ```
             docker build -t hello-world .
   ```

1. イメージが正しく作成されたことを検証するには、**Docker イメージ** コマンドを実行します。

   ```
   docker images --filter reference=hello-world
   ```  
**Example**  

   出力は次のとおりです。

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 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
   ```  
**Example**  

   出力は次のとおりです。

   ```
   Hello from Docker in Cloud9
   ```

   **Docker run** コマンドの詳細については、Docker ウェブサイトの「[Docker run reference](https://docs.docker.com/engine/reference/run/)」を参照してください。

## 3. 新しいリポジトリの作成
<a name="create-repository"></a>

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

**新しい Amazon ECR リポジトリの作成**

1. IDE AWS Cloud9 ナビゲーションバーから、**AWS ツールキットアイコン**を選択します。

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

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

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

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

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

## 4. イメージのプッシュ、プル、削除
<a name="push-image"></a>

Dockerfile からイメージを構築してリポジトリを作成したら、イメージを Amazon ECR リポジトリにプッシュできます。さらに、Docker と AWS CLI で AWS Explorer を使用すると、次の操作を実行できます。
+ イメージをリポジトリからプルします。
+ リポジトリに保存されているイメージを削除します。
+ リポジトリを削除します。

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

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

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

1. **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
   ```
**重要**  
前述のコマンドで、**region** と **AWS\$1account\$1id** を、 AWS アカウントに固有の情報に置き換えます。有効な **region** の値は *us-east-1* です。

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

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

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

   ```
   docker images
   ```  
**Example**  

   出力は次のとおりです。

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. **Docker コマンド**を使用してイメージをビルドします。

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

1. リポジトリに **Docker プッシュ**コマンドでタグ付けされたイメージをプッシュします。
**重要**  
ローカルリポジトリの名前が AWS Amazon EC2 リポジトリと同じであることを確認します。この例では、両方のリポジトリの名前が「`hello-world`」である必要があります。Docker によるイメージのプッシュの詳細については、「[Docker イメージをプッシュする](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)」を参照してください。

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

   出力は次のとおりです。

   ```
   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
   ```

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

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

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

  出力は次のとおりです。

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

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

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

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

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

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

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

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

  出力は次のとおりです。

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Amazon ECR インスタンスからのリポジトリの削除**

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

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

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

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

**CLI からの Amazon ECR AWS リポジトリの削除**
+ リポジトリは、**AWS ecr delete-repository** コマンドで削除できます。　
**注記**  
通常、まずリポジトリに含まれるイメージを削除しないと、リポジトリを削除することはできません。ただし、**--force** フラグを追加すると、リポジトリとそのすべてのイメージを 1 ステップで削除できます。

  ```
          aws ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example**  

  出力は次のとおりです。

  ```
  --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
      }
  }
  ```