GNU/Linux >> Tutoriels Linux >  >> Linux

connexion docker automatique dans un script bash

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


Linux
  1. Un script Bash peut-il être accroché à un fichier ?

  2. Obtenir le chemin complet depuis le script Bash ?

  3. Nettoyage automatique de l'historique de Bash ?

  4. Comment diviser une chaîne dans un script bash

  5. Bash Script - Exemple Hello World

35 exemples de scripts bash

Comment exécuter un script bash

alternatives --config script bash java

Ouvrir Vim depuis un script shell Bash

nom de base avec des espaces dans un script bash ?

Utiliser la variable Bash dans le script SLURM sbatch