web-dev-qa-db-ja.com

Dockerログイン認証トークン

_docker login_ファイルから_~/.docker/config.json_ authを取得しようとしています。しかし、_config.json_ファイルにauthトークンが表示されません。これが私のdockerバージョンです。

_docker version
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      darwin/AMD64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/AMD64
 Experimental: true
_

_cat ~/.docker/config.json_を実行すると、表示されるのは

_cat .docker/config.json
{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "osxkeychain"
}%
_

コードシップによると ドキュメント 私は見なければならない

_{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "auth_key",
            "email": "email"
        }
    }
}
_

キーチェーンへの認証キーの保存を無効にできますか?

_auth_key_を本当に取得する必要がありますが、どうすれば取得できますか?

ありがとうございました

12
Gayan

Authは、単にbase64でエンコードされた「username:password」文字列です。次のコマンドで取得できます。

echo -n 'username:password' | base64
27
Roman Timushev

credential store を使用すると、config.jsonファイルにbase64でエンコードされた資格情報を保存するよりも安全です。あなたの場合、Dockerは資格情報ストアとしてMac OSのネイティブキーチェーン(つまりosxkeychain)を使用しています。

osxkeychainから資格情報を取得する問題については、 docker-credential-helpers を使用できます。

資格情報を取得する手順(ターミナルで):

  1. latest リリースをダウンロードします。
  2. 抽出して/usr/local/binに移動するか、$PATH変数にパスを追加します。そのため、グローバルにアクセスできます。
  3. ターミナルecho "<server-url>" | docker-credential-osxkeychain getでこのコマンドを実行します。 server-urlを見つけたい場合は、このコマンドdocker-credential-osxkeychain listを使用してください。

Goコードで資格情報を取得します。

 package main 
 
 import(
 "fmt" 
 
 osx "github.com/docker/docker-credential-helpers /client"
)

func main(){
 
 p:= osx.NewShellProgramFunc( "docker-credential-osxkeychain")
 
 creds、err:= osx.Get(p、 "server-url")
 if err!= nil {
 fmt.Println(err)
} 
 
 fmt.Printf( "シークレット`%s`を持つ `%s`のユーザー`%s`の資格情報を取得\ n "、creds.Username、creds.ServerURL creds.Secret)
} 
6
dark_shade

macosを使用して、config.jsonファイル、次のようなテンプレートを作成する必要があります。

{
    "auths": {
        "hub.xxx.com": {
            "username": "xxx",
            "password": "xxx",
            "email": "xxx",
            "auth": "base64(username:password)"
        }
    }
}
0
flynn

Kuberentesを使用していて、レジストリパスワードの作成に必要な場合は、次を実行します。

kubectl create secret docker-registry --dry-run=true docker-regcred \
--docker-server=https://index.docker.io/v1/ \
--docker-username=xxx \
--docker-password=xxx \
[email protected] \
--namsepace yournamespace
-o yaml > docker-secret.yaml

これにより、JSONを使用してdocker-secret.yamlが作成されます。 --dry-runおよび-o yaml> docker-secret.yamlを含めない場合、k8sシークレットが作成されます。

0
NicoKowe