web-dev-qa-db-fra.com

connexion automatique au menu fixe dans un script bash

Comment puis-je préconfigurer mes informations d'identification à la commande docker login dans un script?

J'utilise un script bash qui automatise fondamentalement l'ensemble du processus de configuration de mes machines virtuelles personnalisées, etc., mais lorsque je dois me connecter à un menu fixe dans le script pour extraire les images, j'obtiens le message d'erreur suivant:

Nom d'utilisateur: FATA [0000] ioctl inapproprié pour le périphérique


La commande que j'utilisais est la suivante:

( echo "xxx"; echo "yyy"; echo "zzz" ) | docker login docker.somesite.org


Est-ce possible d'atteindre sans utiliser et copier un fichier .dockercfg existant et comment,
Merci beaucoup.

20
user4916078

Docker 18 et au-delà

Il existe maintenant un moyen officiellement documenté de le faire:

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 principal de Docker. Si vous omettez un des arguments, vous serez invité à le faire.

Plus vieux que 1.11

Le même chemin que juste ci-dessus, sauf que vous devez aussi passer un drapeau --email. Le contenu de ceci n'est pas vérifié, donc tout va bien:

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_Host --email [email protected]
28
Nathaniel Waisbrot

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 ou dans les fichiers journaux du shell.

$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_Host
5
nmclough

Lorsque vous vous connectez à votre registre privé, docker crée automatiquement un fichier $ HOME/.docker/config.json. Le fichier contenait les informations d'identification, vous permettant ainsi de sauvegarder le fichier et de le copier sur un 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-docker sur un serveur, ajoutez simplement un autre info d'authentification, comme ceci:

{
     "auths": {
                   "example.com": {
                                    "auth": "xxxxxxxxxxxxxxxxxxxxxxx"
                    },
                    "example1.com":{
                                    "auth": "xxxxxxxxxxxxxxxxxxxxxxx"
                    }
            }
 }

Vous pouvez maintenant pousser et extraire des images de example.com et example1.com.

3
domino_jiang

Pour tout passant aléatoire qui pourrait trébucher dans cette recherche d'un moyen de l'utiliser avec le registre de conteneurs de l'environnement Openshift (Docker), vous pouvez utiliser ce qui suit pour fournir l'URI du registre avec les informations d'identification pour vous y connecter à l'aide d'un jeton Openshift.

$ 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:

  • Passe le jeton récupéré à partir de Openshift oc whoami -t
  • Détermine l'URI du registre Openshift

    $(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
    
  • Se connecte au registre en utilisant $USER + jeton d'en haut

0
slm