Para ejecutar el comando de inicio de sesión de Docker de forma no interactiva, puede configurar el indicador --password-stdin para proporcionar una contraseña a través de STDIN. El uso de STDIN evita que la contraseña termine en el historial del shell o en los archivos de registro.
$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
Cuando inicia sesión en su registro privado, docker crea automáticamente un archivo $HOME/.docker/config.json El archivo tenía la información de Credenciales, por lo que puede guardar el archivo y copiarlo en cualquier host cuando desee iniciar sesión en el registro.
El contenido del archivo es así:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Complemento Si desea iniciar sesión en el registro multi docker en un servidor, simplemente agregue otra información de autenticación. Así:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
},
"example1.com":{
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Ahora puede enviar y extraer imágenes de example.com y example1.com.
Docker 18 y más allá
Ahora hay una manera oficialmente documentada de hacer esto:
cat ~/my_password.txt | docker login --username foo --password-stdin
Docker 1.11 a Docker 17
Puede pasar todos los argumentos en la línea de comandos:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
Si no especifica DOCKER_HOST
, obtendrá el repositorio principal de Docker. Si omite alguno de los argumentos, se le solicitará ese argumento.
Anterior a 1.11
La misma ruta que la anterior, excepto que necesita también pasa un --email
bandera. El contenido de esto no está realmente verificado, por lo que todo está bien:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]
Para cualquier transeúnte aleatorio que pueda tropezar con esto buscando una manera de usar esto contra el registro de contenedores de un entorno Openshift (Docker), puede usar lo siguiente para proporcionar el URI del registro junto con las credenciales para iniciar sesión usando 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
Lo anterior hace 3 cosas:
- Token de pases recuperado de Openshift
oc whoami -t
-
Determina el URI de registro de Openshift
$(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
-
Inicia sesión en el registro usando
$USER
+ token desde arriba