

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

# Amazon ECR プライベートリポジトリへのマルチアーキテクチャイメージのプッシュ
<a name="docker-push-multi-architecture-image"></a>

Docker マニフェストリストを作成してプッシュすることで、マルチアーキテクチャイメージを Amazon ECR リポジトリにプッシュできます。*マニフェストリスト*は、1 つ以上のイメージ名を指定して作成されるイメージのリストです。ほとんどの場合、マニフェストリストは、同じ機能を提供するが異なるオペレーティングシステムまたはアーキテクチャ向けのイメージから作成されます。マニフェストリストは必須ではありません。詳細については、「[Docker マニフェスト](https://docs.docker.com/engine/reference/commandline/manifest/)」を参照してください。

マニフェストリストは、他の Amazon ECR イメージと同様に、Amazon ECS タスク定義または Amazon EKS ポッド仕様でプルまたは参照できます。

 **前提条件** 
+ Docker CLI で実験機能をオンにします。実験機能の詳細については、Docker ドキュメントの「[Experimental features](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features)」を参照してください。
+ イメージをプッシュする前に、Amazon ECR リポジトリが存在している必要があります。詳細については、「[イメージを保存するための Amazon ECR プライベートリポジトリの作成](repository-create.md)」を参照してください。
+ Docker マニフェストを作成する前に、イメージをリポジトリにプッシュする必要があります。イメージをプッシュする方法については、「[Amazon ECR プライベートリポジトリへの Docker イメージのプッシュ](docker-push-ecr-image.md)」を参照してください。

**マルチアーキテクチャ Docker イメージを Amazon ECR リポジトリにプッシュするには**

1. イメージのプッシュ先となる Amazon ECR レジストリに対して Docker クライアントを認証します。認証トークンは、使用するレジストリごとに取得する必要があり、トークンは 12 時間有効です。詳細については、「[Amazon ECR でのプライベートレジストリ認証](registry_auth.md)」を参照してください。

   Amazon ECR レジストリに対して Docker を認証するには、**aws ecr get-login-password** コマンドを実行します。認証トークンを **docker login** コマンドに渡すとき、ユーザー名の `AWS` 値を使用し、認証先の Amazon ECR レジストリの URI を指定します。複数のレジストリに対して認証する場合は、レジストリごとにコマンドを繰り返す必要があります。
**重要**  
エラーが発生した場合は、 AWS CLIの最新バージョンをインストールまたはアップグレードします。詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)」を参照してください。

   ```
   aws ecr get-login-password --region {{<region>}} | docker login --username AWS --password-stdin {{<{{aws_account_id}}>}}.dkr.ecr.{{<region>}}.amazonaws.com
   ```

1. リポジトリ内のイメージをリストし、イメージタグを確認します。

   ```
   aws ecr describe-images --repository-name {{my-repository}}
   ```

1. Docker マニフェストリストを作成します。`manifest create` コマンドは、参照されたイメージがリポジトリにすでに存在することを確認し、マニフェストをローカルに作成します。

   ```
   docker manifest create {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository}} {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository}}:{{image_one_tag}} {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository}}:{{image_two}}
   ```

1. (オプション) Docker マニフェストリストを検査します。これにより、マニフェストリストで参照される各イメージマニフェストのサイズとダイジェストを確認できます。

   ```
   docker manifest inspect {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository}}
   ```

1. Docker マニフェストリストを Amazon ECR リポジトリにプッシュします。

   ```
   docker manifest push {{aws_account_id}}.dkr.ecr.{{region}}.amazonaws.com/{{my-repository}}
   ```