Pour exécuter la commande docker login de manière non interactive, vous pouvez définir l'indicateur --password-stdin pour fournir un mot de passe via STDIN. L'utilisation de STDIN empêche le mot de passe de se retrouver dans l'historique du shell ou dans les fichiers journaux.
$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
Lorsque vous vous connectez à votre registre privé, docker crée automatiquement un fichier $HOME/.docker/config.json Le fichier contient les informations d'identification, vous pouvez donc enregistrer le fichier et le copier sur n'importe quel hôte lorsque vous souhaitez vous connecter au registre.
Le contenu du fichier ressemble à ceci :
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Add-on Si vous souhaitez vous connecter à un registre multi-dockers sur un serveur, ajoutez simplement une autre information d'authentification. Comme ceci :
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
},
"example1.com":{
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Vous pouvez désormais transférer et extraire des images depuis example.com et example1.com.
Docker 18 et au-delà
Il existe désormais un moyen officiellement documenté de procéder :
cat ~/my_password.txt | docker login --username foo --password-stdin
Docker 1.11 à Docker 17
Vous pouvez passer tous les arguments sur la ligne de commande :
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
Si vous ne spécifiez pas DOCKER_HOST
, vous obtiendrez le référentiel Docker principal. Si vous omettez l'un des arguments, vous serez invité à entrer cet argument.
Plus ancien que 1.11
Le même chemin que juste au-dessus, sauf que vous devez également passer un --email
drapeau. Le contenu de ceci n'est pas réellement vérifié, donc tout va bien :
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]
Pour tout passant aléatoire qui pourrait tomber dessus à la recherche d'un moyen de l'utiliser contre le registre de conteneurs d'un environnement Openshift (Docker), vous pouvez utiliser ce qui suit pour fournir l'URI du registre ainsi que les informations d'identification pour s'y connecter à l'aide d'un jeton Openshift. /P>
$ echo "$(oc whoami -t)" | docker login -u $USER --password-stdin \
$(oc get route docker-registry -n default --no-headers | awk '{print $2}')
Login Succeeded
Ce qui précède fait 3 choses :
- Jeton Passes récupéré depuis Openshift
oc whoami -t
-
Détermine l'URI du registre d'Openshift
$(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
-
Se connecte au registre en utilisant
$USER
+ jeton d'en haut