弊社では開発環境に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 とかでもいけるようなので、もし同じ事象が発生したら試す価値あり。