ローカルのPCからECRリポジトリにPushするときに毎回同じエラーに遭遇して、その度に調べているので備忘がてら残しておきます。
以下の記事の方が詳しく書いてあるので、詳細に見たい方はこちらをご覧ください。
qiita.com
実施作業
事象
ECRリポジトリにイメージをPushするときに、以下のコマンドで認証トークンの取得とDockerクライアントの認証をすると思います。
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com
ある日普通にコマンドを実行しようとしたところ、以下のようなエラーが発生しました。
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com /usr/bin/docker-credential-desktop.exe: Invalid argument Error saving credentials: error storing credentials - err: exit status 1, out: ``
原因
どうやら以下のファイルに認証情報が保存されており、credsStoreのパラメータに問題があるようです。
$ cat $HOME/.docker/config.json { "auths": { "XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com": { "auth": "ABC~~XYZ" } }, "credsStore": "desktop.exe" }
対応方法
根本解決になっていないかもしれませんが、credsStoreのパラメータを削除するだけでログインコマンドが実行可能になるようです。
$ cat $HOME/.docker/config.json { "auths": { "XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com": { "auth": "ABC~~XYZ" } } }
無事ログインできました。
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com WARNING! Your password will be stored unencrypted in /home/dhanda/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded