Docker Login してあるかどうか確認する方法
Docker を使った開発案件をやっていると、デフォルトの DockerHub ではなく、AWS とか OCI とかのクラウドベンダ上に作ったプライベート Docker レジストリに、プライベートな Docker イメージを Push したい場合がある。
その場合は、だいたい以下のような感じで docker login
コマンドを叩いて、それから docker push
をしていくことになる。
# OCI (Oracle Cloud)
$ echo 'PASSWORD' | docker login iad.ocir.io -u 【Tenant Name】/【User Name】 --password-stdin
# AliYun (Alibaba Cloud)
$ echo 'PASSWORD' | docker login registry-intl.ap-northeast-1.aliyuncs.com --username=【User Name】@【Tenant】 --password-stdin
# AWS ECR
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 【Account ID】.dkr.ecr.ap-northeast-1.amazonaws.com
色んな作業をしていると、「あれ?docker login
ってしてあるっけ?」と分からなくなることがある。素直に再度 docker login
コマンドを叩いてログインしてしまうのが一番良いのだが、他に確認方法はないのかと調べてみた。
docker login
済かどうかを確認するには、以下のように ~/.docker/config.json
ファイルを覗くと良さそうだ。
$ jq < "${HOME}/.docker/config.json"
{
"auths": {
"000000000000.dkr.ecr.ap-northeast-1.amazonaws.com": {}
},
"credsStore": "desktop"
}
そうするとこんな感じで、auths
プロパティ内にログインしたレジストリ (ココでは Amazon ECR) が確認できる。
$ jq -r < "${HOME}/.docker/config.json" '.auths | keys[]'
こんな風にするとキーの部分だけ列挙できるかな。