docker-credential-ecr-login
とは?
docker-credential-ecr-login
っていうのは、 Amazon ECR (Amazon が提供している Dockerレジストリサービス)に、PCからアクセスする際に必要になるログイン作業を、自動化してくれるツールです。
amazon-ecr-credential-helper
と同じものです。(多分)
インストール方法等、詳細はこちらをご覧ください。
amazon-ecr-credential-helperをWindowsにインストールする
プルしたら docker-credential-ecr-login
でエラーが発生した
新しいPCに docker-credential-ecr-login
をインストールして、 docker pull node:12.3.1-alpine
を実行したところ、以下のエラーが発生しました。
$ docker pull node:12.3.1-alpine
ERRO[0000] Error parsing the serverURL
error="docker-credential-ecr-login can only be used with Amazon Elastic Container Registry."
serverURL="https://index.docker.io/v1/"
docker-credential-ecr-login
使ってhttps://index.docker.io/v1/
(Docker Hubのこと) にアクセスしようとしてますけど、docker-credential-ecr-login
はAmazon ECRでしか使えませんよ!
みたいな意味だと思います。
credsStore
じゃなくて credHelpers
を使わなきゃダメらしい
こちらの記事に同じ症状のことが記載されてました。
docker-credential-ecr-login can only be used with Amazon Elastic Container Registry
どうやら、 config.json
で credsStore
を使うのはダメで、 credHelpers
を使わなきゃいけないみたいです。
config.json
を修正した
%USERPROFILE%\.docker\config.json
を確認したところ、以下のようになっていました。
{
// 省略
"credsStore": "ecr-login",
// 省略
}
この credsStore
の行を削除して、以下のように書き換えます。
{
// 省略
"credHelpers": {
"{AWSアカウントID}.dkr.ecr.{リージョン名}.amazonaws.com": "ecr-login"
},
// 省略
}
例えば、
-
AWSアカウントID
が00000000000000
-
リージョン名
がap-northeast-1
の場合、00000000000000.dkr.ecr.ap-northeast-1.amazonaws.com
となります。
ちなみに、 *
等のワイルドカードは使えませんので、ご注意ください。
例えば、 *.dkr.ecr.*.amazonaws.com
みたいなのはNGです。(私の環境で試したところ、ダメでした。)
これで再度、 docker pull node:12.3.1-alpine
を実行したところ、無事にプルすることができました。
念のため、 ECRからもプルを試してみたところ、そちらも大丈夫でした。
さいごに
以下のサイトを参考にさせていただきました。