マルチアーキテクチャイメージのプッシュ - Amazon ECR

マルチアーキテクチャイメージのプッシュ

Amazon ECR は、マルチアーキテクチャイメージに使用される Docker マニフェストリストの作成とプッシュをサポートします。マニフェストリストは、1 つ以上のイメージ名を指定して作成されるイメージのリストです。ほとんどの場合、マニフェストリストは、さまざまなオペレーティングシステムまたはアーキテクチャに同じ機能を提供するイメージから作成されます。マニフェストリストは必須ではありません。詳細については、「Docker マニフェスト」を参照してください。

重要

この機能を使用するには、Docker CLI で実験機能が有効になっている必要があります。詳細については、「実験機能」を参照してください。

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

次のステップを使用して、Docker マニフェストリストを作成して Amazon ECR リポジトリにプッシュできます。Docker マニフェストで参照するには、イメージがすでにリポジトリにプッシュされている必要があります。イメージをプッシュする方法については、「Docker イメージをプッシュする」を参照してください。

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

イメージをプッシュする前に、Amazon ECR リポジトリが存在している必要があります。詳細については、「プライベートリポジトリを作成する」を参照してください。

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

    Amazon ECR レジストリに対して Docker を認証するには、aws ecr get-login-password コマンドを実行します。認証トークンを docker login コマンドに渡すとき、ユーザー名の AWS 値を使用し、認証先の Amazon ECR レジストリの URI を指定します。複数のレジストリに対して認証する場合は、レジストリごとにコマンドを繰り返す必要があります。

    重要

    エラーが発生した場合は、AWS CLI の最新バージョンをインストールまたはアップグレードします。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interface のインストール」を参照してください。

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  2. リポジトリ内のイメージをリストし、イメージタグを確認します。

    aws ecr describe-images --repository-name my-repository
  3. 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
  4. (オプション) Docker マニフェストリストを検査します。これにより、マニフェストリストで参照される各イメージマニフェストのサイズとダイジェストを確認できます。

    docker manifest inspect aws_account_id.dkr.ecr.region.amazonaws.com/my-repository
  5. Docker マニフェストリストを Amazon ECR リポジトリにプッシュします。

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