

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

# カスタムイメージを作成して Amazon ECR にプッシュする
<a name="studio-updated-byoi-how-to-prepare-image"></a>

このページでは、ローカル Dockerfile を作成し、コンテナイメージを構築して、Amazon Elastic Container Registry (Amazon ECR) に追加する方法について説明します。

**注記**  
次の例では、タグを指定しないため、`latest` タグがデフォルトで適用されます。タグを指定する場合は、イメージ名の末尾に `:tag` を追加する必要があります。詳細については、*Docker ドキュメント*の「[docker image tag](https://docs.docker.com/reference/cli/docker/image/tag/)」(Docker イメージのタグ) を参照してください。

**Topics**
+ [ローカル Dockerfile を作成してコンテナイメージを構築する](#studio-updated-byoi-how-to-create-local-dockerfile)
+ [Docker イメージを Amazon ECR に追加する](#studio-updated-byoi-add-container-image)

## ローカル Dockerfile を作成してコンテナイメージを構築する
<a name="studio-updated-byoi-how-to-create-local-dockerfile"></a>

以下の手順に従って、必要なソフトウェアと依存関係を使用して Dockerfile を作成します。

**Dockerfile を作成するには**

1. まず、以下の AWS CLI コマンドの変数を設定します。

   ```
   LOCAL_IMAGE_NAME=local-image-name
   ```

   `local-image-name` は、ここで定義するローカルデバイス上のコンテナイメージの名前です。

1. 「[カスタムイメージの仕様](studio-updated-byoi-specs.md)」に記載の仕様を満たす、`Dockerfile` という名前のテキストベースのドキュメントを作成します。

   サポートされているアプリケーションの `Dockerfile` 例については、「[Dockerfile サンプル](studio-updated-byoi-specs.md#studio-updated-byoi-specs-dockerfile-templates)」を参照してください。
**注記**  
独自のイメージを SageMaker Unified Studio に取り込む (BYOI) 場合は、「*Amazon SageMaker Unified Studio ユーザーガイド*」の「[Dockerfile 仕様](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html)」に従う必要があります。  
SageMaker Unified Studio の `Dockerfile` の例については、「*Amazon SageMaker Unified Studio ユーザーガイド*」の「[Dockerfile の例](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/byoi-specifications.html#byoi-specifications-example)」を参照してください。

1. `Dockerfile` と同じディレクトリで、以下のコマンドを使用して Docker イメージを構築します。ピリオド (`.`) は、`Dockerfile` が build コマンドのコンテキスト内にあることを指定します。

   ```
   docker build -t ${LOCAL_IMAGE_NAME} .
   ```

   build が完了したら、以下のコマンドを使用して、コンテナイメージ情報を一覧表示できます。

   ```
   docker images
   ```

1. (オプション) 以下のコマンドを使用すると、イメージをテストできます。

   ```
   docker run -it ${LOCAL_IMAGE_NAME}
   ```

   出力では、サーバーが `http://127.0.0.1:8888/...` などの URL で実行されていることが示されます。この URL をブラウザにコピーして、イメージをテストできます。

   これが機能しない場合は、docker run コマンドに `-p port:port` を含める必要がある場合があります。このオプションは、コンテナで公開されているポートをホストシステム上のポートにマッピングします。Docker の実行の詳細については、*Docker ドキュメント*の「[Running containers](https://docs.docker.com/engine/containers/run/)」(コンテナ) を参照してください。

   サーバーが動作していることを確認したら、サーバーを停止し、すべてのカーネルをシャットダウンしてから続行できます。この手順は出力で確認できます。

## Docker イメージを Amazon ECR に追加する
<a name="studio-updated-byoi-add-container-image"></a>

Amazon ECR に コンテナイメージを追加するには、次の手順を実行します。
+ Amazon ECR リポジトリを作成します。
+ デフォルトのレジストリにログインします。
+ Amazon ECR リポジトリにイメージをプッシュします

**注記**  
Amazon ECR リポジトリは、イメージをアタッチするドメイン AWS リージョン と同じ にある必要があります。

**コンテナイメージを構築して Amazon ECR にプッシュするには**

1. まず、以下の AWS CLI コマンドの変数を設定します。

   ```
   ACCOUNT_ID=account-id
   REGION=aws-region
   ECR_REPO_NAME=ecr-repository-name
   ```
   + `account-id` は、使用するアカウント ID です。これは、 AWS コンソールページの右上にあります。例えば、[SageMaker AI コンソール](https://console.aws.amazon.com/sagemaker) などに表示されます。
   + `aws-region` は、Amazon SageMaker AI ドメイン AWS リージョン の です。これは、 AWS コンソールページの右上にあります。
   + `ecr-repository-name` は、ここで定義する Amazon Elastic Container Registry リポジトリの名前です。Amazon ECR リポジトリを表示するには、「[Amazon ECR コンソール](https://console.aws.amazon.com/ecr)」を参照してください。

1. Amazon ECR にログインし、Docker にサインインします。

   ```
   aws ecr get-login-password \
       --region ${REGION} | \
       docker login \
       --username AWS \
       --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com
   ```

   認証が正常に完了すると、ログイン成功メッセージが表示されます。
**重要**  
エラーが発生した場合は、 AWS CLIの最新バージョンをインストールするか、アップグレードする必要がある可能性があります。詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

1. リポジトリにプッシュするには、Amazon ECR と互換性がある形式でイメージにタグを付けます。

   ```
   docker tag \
       ${LOCAL_IMAGE_NAME} \
       ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ECR_REPO_NAME}
   ```

1.  AWS CLIコマンドを使って、Amazon ECR リポジトリを作成します。Amazon ECR コンソールを使用してリポジトリを作成するには、「[イメージを保存用の Amazon ECR プライベートリポジトリの作成](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)」を参照してください。

   ```
   aws ecr create-repository \
       --region ${REGION} \
       --repository-name ${ECR_REPO_NAME}
   ```

1. Amazon ECR リポジトリにイメージをプッシュします。Docker イメージにタグを付けることもできます。

   ```
   docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${ECR_REPO_NAME}
   ```

イメージが Amazon ECR リポジトリに正常に追加されると、[Amazon ECR コンソール](https://console.aws.amazon.com/ecr)で表示できます。