LoginSignup
1
1

More than 3 years have passed since last update.

docker-credential-ecr-login can only be used with Amazon Elastic Container Registry. のエラーを消す

Posted at

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.jsoncredsStore を使うのはダメで、 credHelpers を使わなきゃいけないみたいです。

config.json を修正した

%USERPROFILE%\.docker\config.json を確認したところ、以下のようになっていました。

{
  // 省略
  "credsStore": "ecr-login",
  // 省略
}

この credsStore の行を削除して、以下のように書き換えます。

{
  // 省略
  "credHelpers": {
    "{AWSアカウントID}.dkr.ecr.{リージョン名}.amazonaws.com": "ecr-login"
  },
  // 省略
}

例えば、

  • AWSアカウントID00000000000000
  • リージョン名ap-northeast-1

の場合、00000000000000.dkr.ecr.ap-northeast-1.amazonaws.com となります。

ちなみに、 * 等のワイルドカードは使えませんので、ご注意ください。
例えば、 *.dkr.ecr.*.amazonaws.com みたいなのはNGです。(私の環境で試したところ、ダメでした。)

これで再度、 docker pull node:12.3.1-alpine を実行したところ、無事にプルすることができました。

念のため、 ECRからもプルを試してみたところ、そちらも大丈夫でした。

さいごに

以下のサイトを参考にさせていただきました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1