Per eseguire il comando docker login in modo non interattivo, puoi impostare il flag --password-stdin per fornire una password tramite STDIN. L'utilizzo di STDIN impedisce alla password di finire nella cronologia della shell o nei file di registro.
$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
Quando accedi al tuo registro privato, la finestra mobile crea automaticamente un file $HOME/.docker/config.json Il file conteneva le informazioni sulle credenziali, quindi puoi salvare il file e copiarlo su qualsiasi host quando vuoi accedere al registro.
Il contenuto del file come questo:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Componente aggiuntivo Se desideri accedere al registro multidocker su un server, aggiungi semplicemente un'altra autenticazione info.come questa:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
},
"example1.com":{
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Ora puoi eseguire il push e il pull delle immagini da example.com e example1.com.
Docker 18 e versioni successive
Ora c'è un modo ufficialmente documentato per farlo:
cat ~/my_password.txt | docker login --username foo --password-stdin
Da Docker 1.11 a Docker 17
Puoi passare tutti gli argomenti sulla riga di comando:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
Se non specifichi DOCKER_HOST
, otterrai il repository Docker principale. Se tralasci uno qualsiasi degli argomenti, ti verrà richiesto di inserirlo.
Più vecchio di 1.11
Lo stesso percorso di cui sopra, tranne per il fatto che devi anche passa un --email
bandiera. Il contenuto di questo non viene effettivamente controllato, quindi va bene qualsiasi cosa:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]
Per qualsiasi passante casuale che potrebbe imbattersi in questo alla ricerca di un modo per utilizzarlo contro un registro contenitore (Docker) di un ambiente Openshift, è possibile utilizzare quanto segue per fornire l'URI del registro insieme alle credenziali per accedere utilizzando un token 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
Quanto sopra fa 3 cose:
- Passa il token recuperato da Openshift
oc whoami -t
-
Determina l'URI del registro di Openshift
$(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
-
Accede al registro utilizzando
$USER
+ token dall'alto