Docker login の覚書です。
Mac に Docker Desktop をインストールしていると仮定します。
Install Docker Desktop on Mac
docker コマンドの設定ファイルは $HOME/.docker/config.json
です。
Mac はデフォルトで以下のように指定されています。
{
"auths": {},
"credsStore": "desktop"
}
資格証明ストアは config.json の credsStore プロパティで指定します。
credsStore プロパティは、デフォルトの資格証明ストア(credential store)として提供する外部バイナリを指定します。 このプロパティが設定されていない場合、docker login は、$PATH 上の docker-credential-
によって指定されたバイナリに資格証明の保存を試みます。 このプロパティが設定されていない場合、資格証明は config の auths プロパティに保存されます。 詳細は docker login の 資格証明ストア の節 を参照してください。
ref. 設定ファイル
Mac に Docker Desktop は以下の資格証明ストア(credential store)を提供します。
デフォルトでは、Docker は各プラットフォームのネイティブなバイナリを探します。たとえば、 macOS であれば「osxkeychain」、Windows であれば「wincerd」、Linux であれば「pass」です。Linux では特別な状況で、Docker は「pass」バイナリが見つからない場合、「secretservice」を頼りにします。もしも、これらのバイナリが存在しなければ、先ほど記述した設定ファイル中に、 base64 エンコーディングした認証情報(例:パスワード)を保管します。
ref. デフォルトの挙動
Macの config.json は credsStore: desktop
がデフォルトです。 desktop は docker-credential-desktop を使用します。
docker-credential-desktop の 最終的な資格証明情報は docker-credential-osxkeychain と同じでキーチェーンに保存されます。
ref. https://stackoverflow.com/questions/69802668/what-does-the-value-desktop-mean-for-the-credstore-attribute-in-docker-config
// https://index.docker.io/v1 にログイン
$ doker login
ログインすると config.json の auths プロパティに追加します。
{
"auths": {
"https://index.docker.io/v1/": {}
},
"credsStore": "desktop"
}
資格情報はキーチェーンに保存します。
// https://index.docker.io/v1 からログアウト
$ docker logout
Removing login credentials for https://index.docker.io/v1/
ログアウトすると config.json の auths プロパティから削除します。
{
"auths": {},
"credsStore": "desktop"
}
資格情報をキーチェーンから削除します。
ECR は AWS CLI を使ってログインします。
Docker Hub の場合と同じように資格情報をキーチェーンに保存します。
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com
Amazon ECR にログインするフローです。
1.
で取得したトークンを標準入力として渡して docker login を発行ログインすると config.json の auths プロパティに追加します。
{
"auths": {
"xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com": {}
},
"credsStore": "desktop"
}
資格情報はキーチェーンに保存します。
認証情報の有効期間は12時間です。
The authorization token is valid for 12 hours.
ref. get-login-password
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。