弊社では開発環境にDockerを使用している。
開発環境はインフラ含め、アプリケーション開発を手元で行えるようにコンテナ化されている。
イメージはAmazonECRにあるので、開発する人は、ECRへログインしてイメージを取ってくることで、最新のイメージが使用できるようになっている。
今日、会社の開発者の方からECRにログインできないという相談を受けた。
ECRにログインする際は下記ワンライナーでログインするのだけど、それでエラーが出てしまう。
$(aws ecr --profile XXXXXXX get-login --no-include-email --region XXXXXXXXXX)
通常、このあとに、
Login Success!
みたいなのが表示されるのだが、今回はこんなエラーが表示されていた。
Error saving credentials: error storing credentials - err: exit status 1, out: `The user name or passphrase you entered is not correct.`
最初、credentialsファイルがおかしいのかな?とか、awscliが死んでるのかな?とか疑ったのだけど、credentialsファイルは問題なく、awscliも私と同じバージョンにしたけど、エラーは解消しなかった。
そこで、ネットで調べた所下記issueがヒットした。
https://github.com/docker/for-mac/issues/2295
Dockerのconfig.jsonに書いてある一行を削除しろと書いてあった。
$ vim ~/.docker/config.json
{
"auths": {
"XXXXXXXXXXXXXXXXXXXXXXXX.amazonaws.com": {},
"https://XXXXXXXXXXXXX.amazonaws.com": {}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.0-ce (darwin)"
},
"credsStore": "osxkeychain"
こんなファイルがあるので、`”credsStore”: “osxkeychain”` をまるっと消してあげた。
そうしたら無事(?)にログインできるようになった。
この項目はどうやらユーザーの証明書をOSXのキーチェーンに保存するもののようで、恐らくそれがうまく取得できなくなったのだと思われる。
http://docs.docker.jp/engine/reference/commandline/login.html#creadentials-store
開発者の方も、OSXをアップデートしたら発生するようになったと言われたので、アップデート周りでおかしくなってしまったのかもしれない。
手動で削除しなくても、docker logout とかでもいけるようなので、もし同じ事象が発生したら試す価値あり。