J'essaie d'obtenir docker login
auth de ~/.docker/config.json
fichier. Mais je ne vois pas le jeton auth
dans mon config.json
fichier. Voici ma version 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
Quand je lance cat ~/.docker/config.json
alors ce que je peux voir c'est
cat .docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {}
},
"credsStore": "osxkeychain"
}%
Selon Codeship documentation je devrais voir
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "auth_key",
"email": "email"
}
}
}
Puis-je désactiver le stockage de ma clé d'authentification dans le trousseau?
J'ai vraiment besoin d'obtenir auth_key
, comment puis-je obtenir cela?
Je vous remercie
Auth est simplement une chaîne 'username: password' encodée en base64. Vous pouvez l'obtenir avec la commande suivante:
echo -n 'username:password' | base64
L'utilisation de stockage des informations d'identification est plus sécurisée que le stockage des informations d'identification encodées en base64 dans config.json
fichier. Dans votre cas, Docker utilise le trousseau natif de Mac OS (c'est-à-dire osxkeychain) comme magasin d'informations d'identification.
Maintenant, pour le problème de l'obtention des informations d'identification à partir du osxkeychain
, vous pouvez utiliser docker-credential-helpers .
Étapes pour obtenir les informations d'identification (dans le terminal):
/usr/local/bin
ou ajoutez son chemin vers le $PATH
variable. Pour que vous puissiez y accéder globalement.echo "<server-url>" | docker-credential-osxkeychain get
. Si vous souhaitez connaître le server-url
utilisez cette commande docker-credential-osxkeychain list
.Obtenez les informations d'identification dans le code go:
package main import ( "fmt" osx "github.com/docker/docker-credential-helpers /client"[.____.UM)).]. [__.]. p: = osx.NewShellProgramFunc ("docker-credential-osxkeychain") creds, err: = osx.Get (p, "server-url") if err! = nil { fmt.Println (err) } fmt.Printf ("Informations d'identification obtenues pour l'utilisateur`% s` dans `% s` avec le secret`% s`\n ", creds.Username, creds.ServerURL, creds.Secret) }
en utilisant macos, vous devez écrire un fichier config.json, un modèle comme celui-ci:
{
"auths": {
"hub.xxx.com": {
"username": "xxx",
"password": "xxx",
"email": "xxx",
"auth": "base64(username:password)"
}
}
}
Si vous utilisez Kuberentes et que vous en avez besoin pour créer le mot de passe de registre, lancez simplement:
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
Cela créera docker-secret.yaml avec votre JSON. si vous n'incluez pas --dry-run et -o yaml> docker-secret.yaml Cela créera le secret k8s.