Amazon ECR Docker Credential Helper は、Amazon Elastic Container Registry の使用を容易にする Docker デーモンの認証情報ヘルパーです。
前提条件
インストール中
Amazon Linux 2023 (AL2023)
Amazon Linux 2 (AL2)
Mac OS
Debian Buster (および将来のバージョン)
Ubuntu 19.04 Disco Dingo 以降
Arch Linux
アルパイン・リナックス
窓
ソースから
構成
ドッカー
AWS認証情報
Amazon ECR Docker 認証情報ヘルパー
使用法
トラブルシューティング
セキュリティの開示
ライセンス
システムには少なくとも Docker 1.11 がインストールされている必要があります。
AWS 認証情報も使用できる必要があります。 さまざまな AWS 認証情報の使用方法の詳細については、「AWS 認証情報」セクションを参照してください。
Amazon ECR Credential Helper は、Amazon Linux 2023 リポジトリからインストールできます。
$ sudo dnf install -y amazon-ecr-credential-helper
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
Amazon ECR Credential Helper はdocker
またはecs
extras からインストールできます。
$ sudo amazon-linux-extras ドッカーを有効にする $ sudo yum install amazon-ecr-credential-helper
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
コミュニティが管理する Homebrew フォーミュラは、コアタップで利用できます。
$ brew install docker-credential-helper-ecr
macOS では、コミュニティによって管理されているもう 1 つのインストール方法は MacPorts を使用することです。
$ sudo port install docker-credential-helper-ecr
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
Amazon ECR Credential Helper は、Debian Buster アーカイブからインストールできます。 このパッケージは、Debian の将来のリリースにも含まれる予定です。
$ sudo aptアップデート $ sudo apt install amazon-ecr-credential-helper
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
Amazon ECR Credential Helper は、Ubuntu 19.04 Disco Dingo (およびそれ以降) アーカイブからインストールできます。
$ sudo aptアップデート $ sudo apt install amazon-ecr-credential-helper
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
コミュニティが管理するパッケージは、Arch ユーザー リポジトリで入手できます。
$ git clone https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd amazon-ecr-credential-helper $ makepkg -si
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
コミュニティが管理するパッケージは、Alpine Linux aports リポジトリで入手できます。
$ apk add docker-credential-ecr-login
注記
バッジにはエッジのみが表示されます。安定リリースのリポジトリを確認するか、 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
を追加してください
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
Windows 実行可能ファイルは、GitHub リリースから入手できます。
注記
Windows ARM サポートは実験的であると考えられています。
#795 を参照
Amazon ECR Docker Credential Helper を構築してインストールするには、Go 1.19 以降、 git
およびmake
システムにインストールすることをお勧めします。
Go をインストールしたばかりの場合は、PATH または環境変数 (Windows) にも Go を追加していることを確認してください。例えば:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
または Windows の場合:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
PATH を定義していない場合、以下のコマンドはサイレントに失敗し、 docker-credential-ecr-login
実行するとcommand not found
出力されます。
これはgo
コマンド ライン ツールを介してインストールできます。
インストールするには、次のコマンドを実行します。
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
警告
免責事項: このリポジトリの Dockerfile は、GitHub Actions CI で Amazon ECR 認証情報ヘルパー バイナリのクロスコンパイルをテストするために、またソースからローカルに構築するための開発者ユーティリティとして使用されます。これはリファレンス実装であり、運用コンテナを構築および実行するためにセキュリティが強化されたものではありません。
すでに Docker 環境がある場合は、このリポジトリのクローンを任意の場所に作成し、 make build-in-docker
を実行します。このコマンドは、Docker コンテナ内で Go を使用してバイナリをビルドし、ローカル ディレクトリに出力します。
TARGET_GOOS
環境変数を使用すると、バイナリをクロスコンパイルすることもできます。
資格情報ヘルパーをインストールしたら、そのヘルパーと連携して動作するように Docker を構成する方法については、「構成」セクションを参照してください。
docker login
やdocker logout
使用する必要はありません。
docker-credential-ecr-login
バイナリをPATH
に配置し、 ~/.docker/config.json
ファイルの内容を次のように設定します。
{ "credsStore": "ecr-login"}
これにより、すべての Amazon ECR レジストリに対して認証情報ヘルパーを使用するように Docker デーモンが設定されます。
Amazon ECR Docker Credential Helper は、既存の Docker ログイン認証トークンと一緒に使用できます。
{ "credsStore": "ecr-login", "auths": { "https://index.docker.io/v1/": { "auth": [docker.io-auth-token] }, "registry.gitlab.com": { "認証": [gitlab-auth-token] }、 } }
Docker 1.13.0 以降では、異なる ECR レジストリに対して異なる認証情報ヘルパーを使用するように Docker を構成できます。特定の ECR レジストリに対してこの認証情報ヘルパーを使用するには、ECR レジストリの URI を使用してcredHelpers
セクションを作成します。
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
これはdocker
使用して、異なる認証資格情報を使用するレジストリを操作する場合に便利です。
Amazon ECR Docker Credential Helper を使用すると、さまざまな場所に保存されている AWS 認証情報を使用できます。 標準的なものには次のようなものがあります。
共有認証情報ファイル ( ~/.aws/credentials
)
AWS_ACCESS_KEY_ID
およびAWS_SECRET_ACCESS_KEY
環境変数
Amazon ECS タスクの IAM ロール
Amazon EC2 の IAM ロール
共有認証情報ファイル ( ~/.aws/credentials
) 内の別の名前付きプロファイルに関連付けられた認証情報を使用するには、 AWS_PROFILE
環境変数を設定できます。
Amazon ECR Docker Credential Helper は、AWS 共有設定ファイル ( ~/.aws/config
) で指定されたいくつかの設定オプションを読み取り、サポートします。 これらのオプションを無効にするには、 AWS_SDK_LOAD_CONFIG
環境変数をfalse
に設定する必要があります。 サポートされているオプションには次のものがあります。
role_arn
およびsource_profile
で指定された想定されるロール
credential_process
で指定された外部認証情報プロセス
Kubernetes のサービス アカウントの IAM ロールなどの Web ID (注: root 以外のユーザーでコンテナを使用している Kubernetes ユーザーは、このバグで説明されている権限の問題に遭遇する可能性があり、Kubernetes securityContext
を調整する回避策を採用する必要がある場合があります。 )
Amazon ECR Docker Credential Helper は、AWS CLI および AWS SDK と同じ認証情報を使用します。 AWS 認証情報の設定の詳細については、 『AWS Command Line Interface User Guide』の「設定ファイルと認証情報ファイル」を参照してください。
認証情報には、Amazon ECR へのアクセスを許可するポリシーが適用されている必要があります。
環境変数 | サンプル値 | 説明 |
---|---|---|
AWS_ECR_DISABLE_CACHE | 真実 | 空ではない値に設定されている場合、ローカル ファイル認証キャッシュを無効にします。 |
AWS_ECR_CACHE_DIR | ~/.ecr | ローカル ファイル認証キャッシュ ディレクトリの場所を指定します |
AWS_ECR_IGNORE_CREDS_STORAGE | 真実 | Docker のログインまたはログアウトの呼び出しを無視し、成功したかのように振る舞う |
docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
AWS CLI で使用する追加のプロファイルを設定している場合は、 docker
呼び出すときにAWS_PROFILE
環境変数を指定することで、それらのプロファイルを使用できます。例えば:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker login
やdocker logout
使用する必要はありません。
以前にdocker login
コマンドを手動で使用して ECR リポジトリで認証したことがある場合、Docker は有効期限が切れた認証トークンを保存している可能性があります。 Docker は、資格情報ヘルパーを利用する代わりに、キャッシュされた認証トークンの使用を試行し続けます。 docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
を使用して、以前にキャッシュされた期限切れのトークンを明示的に削除する必要があります。その後、Docker は ECR 認証情報ヘルパーを利用して新しい認証情報を取得し始めるため、 docker login
またはdocker logout
を使用する必要はなくなります。
Amazon ECR Docker Credential Helper からのログは~/.ecr/log
に保存されます。
Amazon ECR の詳細については、『Amazon Elastic Container Registry ユーザーガイド』を参照してください。
実験的としてマークされた機能は、ユーザーがテストしてフィードバックを提供できるようにオプションで提供されます。
実験的な機能をテストする場合は、機能の追跡問題を通じて以下に関するフィードバックを提供できます。
この機能についてのあなたの経験
問題や問題
提案された改善点
実験的な機能は設計と実装が不完全です。下位互換性のない変更はいつでも導入されるか、サポートが完全に終了する可能性があります。したがって、実験的な機能を運用環境で使用することは推奨されません。
潜在的なセキュリティ問題を発見したと思われる場合は、問題に投稿しないでください。 代わりに、ここの手順に従うか、AWS セキュリティに直接メールを送信してください。
Amazon ECR Docker Credential Helper は、Apache 2.0 ライセンスに基づいてライセンスされています。