GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Automatische Docker-Anmeldung innerhalb eines Bash-Skripts

Um den Docker-Login-Befehl nicht interaktiv auszuführen, können Sie das Flag --password-stdin so setzen, dass ein Passwort über STDIN bereitgestellt wird. Die Verwendung von STDIN verhindert, dass das Passwort im Verlauf der Shell oder in Protokolldateien landet.

$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST

Wenn Sie sich bei Ihrer privaten Registrierung anmelden, erstellt Docker automatisch eine Datei $HOME/.docker/config.json. Die Datei enthält die Anmeldeinformationen, sodass Sie die Datei speichern und auf einen beliebigen Host kopieren können, wenn Sie sich bei der Registrierung anmelden möchten.

Der Dateiinhalt sieht so aus:

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

Add-on Wenn Sie sich bei der Multi-Docker-Registrierung auf einem Server anmelden möchten, fügen Sie einfach eine weitere Authentifizierungsinfo hinzu. So:

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

Jetzt können Sie Bilder von example.com und example1.com übertragen und abrufen.


Docker 18 und höher

Dafür gibt es jetzt einen offiziell dokumentierten Weg:

cat ~/my_password.txt | docker login --username foo --password-stdin

Docker 1.11 bis Docker 17

Sie können alle Argumente auf der Befehlszeile übergeben:

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST

Wenn Sie DOCKER_HOST nicht angeben , erhalten Sie das Haupt-Docker-Repo. Wenn Sie eines der Argumente weglassen, werden Sie zur Eingabe dieses Arguments aufgefordert.

Älter als 1.11

Derselbe Pfad wie oben, außer dass Sie auch müssen Übergeben Sie eine --email Flagge. Der Inhalt davon wird nicht wirklich überprüft, also ist alles in Ordnung:

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]

Für jeden zufälligen Passanten, der nach einer Möglichkeit sucht, dies für die Containerregistrierung einer Openshift-Umgebung (Docker) zu verwenden, können Sie Folgendes verwenden, um den Registrierungs-URI zusammen mit den Anmeldeinformationen bereitzustellen, um sich mit einem Openshift-Token anzumelden.

$ echo "$(oc whoami -t)" | docker login -u $USER --password-stdin \
    $(oc get route docker-registry -n default --no-headers | awk '{print $2}')
Login Succeeded

Das Obige macht 3 Dinge:

  • Übergibt Token, das von Openshift oc whoami -t abgerufen wurde
  • Ermittelt den Registrierungs-URI von Openshift

    $(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
    
  • Meldet sich mit $USER bei der Registrierung an + Token von oben


Linux
  1. Kann ein Bash-Skript mit einer Datei verknüpft werden?

  2. Typeset -a Gibt Fehler im Skript an?

  3. Bash-Skript zum Ausfüllen einer Vorlage?

  4. Automatische Bereinigung des Bash-Verlaufs?

  5. So teilen Sie eine Zeichenfolge in Bash-Skript auf

35 Bash-Skriptbeispiele

So führen Sie ein Bash-Skript aus

Bash-Skript – Beispiel „Hello World“.

Führen Sie das Bash-Skript von der URL aus

Öffnen Sie Vim aus einem Bash-Shell-Skript heraus

Führen Sie den Bash-Befehl auf der Jenkins-Pipeline aus