_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
_を本当に取得する必要がありますが、どうすれば取得できますか?
ありがとうございました
Authは、単にbase64でエンコードされた「username:password」文字列です。次のコマンドで取得できます。
echo -n 'username:password' | base64
credential store を使用すると、config.json
ファイルにbase64でエンコードされた資格情報を保存するよりも安全です。あなたの場合、Dockerは資格情報ストアとしてMac OSのネイティブキーチェーン(つまりosxkeychain)を使用しています。
osxkeychain
から資格情報を取得する問題については、 docker-credential-helpers を使用できます。
資格情報を取得する手順(ターミナルで):
/usr/local/bin
に移動するか、$PATH
変数にパスを追加します。そのため、グローバルにアクセスできます。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) }
macosを使用して、config.jsonファイル、次のようなテンプレートを作成する必要があります。
{
"auths": {
"hub.xxx.com": {
"username": "xxx",
"password": "xxx",
"email": "xxx",
"auth": "base64(username:password)"
}
}
}
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シークレットが作成されます。