docker login
| Descripción | Se autentica ante un registro |
|---|---|
| Uso | docker login [OPTIONS] [SERVER] |
Descripción
Se autentica ante un registro.
Puedes autenticarte ante cualquier registro público o privado para el cual tengas
credenciales. La autenticación puede ser necesaria para descargar (pull) y subir (push) imágenes.
Otros comandos, como docker scout y docker build, también pueden requerir
autenticación para acceder a características exclusivas de suscripción o datos relacionados con tu
organización de Docker.
Las credenciales de autenticación se almacenan en el almacén de credenciales
configurado. Si usas Docker Desktop, las credenciales se guardan automáticamente
en el llavero (keychain) nativo de tu sistema operativo. Si no estás usando Docker Desktop,
puedes configurar el almacén de credenciales en el archivo de configuración de Docker,
que se encuentra en $HOME/.docker/config.json en Linux o %USERPROFILE%/.docker/config.json
en Windows. Si no configuras un almacén de credenciales, Docker almacena las credenciales
en el archivo config.json en un formato codificado en base64. Este método es menos seguro
que configurar y usar un almacén de credenciales.
docker login también admite helpers de credenciales para ayudarte a
gestionar las credenciales de registros específicos.
Métodos de autenticación
Puedes autenticarte ante un registro usando un nombre de usuario y un token de acceso personal o
contraseña. Docker Hub también admite un flujo de inicio de sesión basado en la web, que te permite iniciar
sesión en tu cuenta de Docker sin ingresar tu contraseña. Para Docker Hub, el comando
docker login utiliza un flujo de código de dispositivo por defecto, a menos que se especifique
la opción --username. El flujo de código de dispositivo es una forma segura de iniciar
sesión. Consulta Autenticarse en Docker Hub usando un código de dispositivo.
Almacenes de credenciales
Docker Engine puede guardar las credenciales de usuario en un almacén de credenciales externo, como el llavero nativo del sistema operativo. Usar un almacén externo es más seguro que almacenar las credenciales en el archivo de configuración de Docker.
Para usar un almacén de credenciales, necesitas un programa helper externo para interactuar
con un llavero específico o un almacén externo. Docker requiere que el programa helper
esté en el $PATH del host del cliente.
Puedes descargar los helpers desde la página de lanzamientos
de docker-credential-helpers. Los helpers están disponibles para los siguientes almacenes de credenciales:
- D-Bus Secret Service
- Apple macOS keychain
- Microsoft Windows Credential Manager
- pass
Con Docker Desktop, el almacén de credenciales ya está instalado y configurado. A menos que desees cambiar el almacén de credenciales utilizado por Docker Desktop, puedes omitir los siguientes pasos.
Configurar el almacén de credenciales
Debes especificar el almacén de credenciales en $HOME/.docker/config.json
para indicarle a Docker Engine que lo use. El valor de la propiedad de configuración debe ser
el sufijo del programa a utilizar (es decir, todo lo que va después de docker-credential-).
Por ejemplo, para usar docker-credential-osxkeychain:
{
"credsStore": "osxkeychain"
}If you are currently logged in, run docker logout to remove
the credentials from the file and run docker login again.
Comportamiento por defecto
Por defecto, Docker busca el binario nativo en cada una de las plataformas, es decir,
osxkeychain en macOS, wincred en Windows y pass en Linux. Un caso especial
es que en Linux, Docker recurrirá al binario secretservice si no puede encontrar el
binario pass. Si ninguno de estos binarios está presente, almacena las credenciales
codificadas en base64 en el archivo de configuración config.json.
Protocolo de helper de credenciales
Los helpers de credenciales pueden ser cualquier programa o script que implemente el protocolo de helper de credenciales. Este protocolo está inspirado en Git, pero difiere en la información compartida.
Los helpers siempre utilizan el primer argumento del comando para identificar la acción.
Solo hay tres valores posibles para ese argumento: store, get y erase.
El comando store toma una carga útil (payload) JSON desde la entrada estándar. Esa carga útil contiene
la dirección del servidor para identificar la credencial, el nombre de usuario y una contraseña
o un token de identidad.
{
"ServerURL": "https://index.docker.io/v1",
"Username": "david",
"Secret": "passw0rd1"
}Si el secreto que se está almacenando es un token de identidad, el Username debe establecerse en
<token>.
El comando store puede escribir mensajes de error en STDOUT que Docker Engine
mostrará si hubo algún problema.
El comando get toma una carga útil de cadena desde la entrada estándar. Esa carga útil contiene
la dirección del servidor para la cual Docker Engine necesita las credenciales. Este es
un ejemplo de esa carga útil: https://index.docker.io/v1.
El comando get escribe una carga útil JSON en STDOUT. Docker lee el nombre de usuario
y la contraseña de esta carga útil:
{
"Username": "david",
"Secret": "passw0rd1"
}El comando erase toma una carga útil de cadena desde STDIN. Esa carga útil contiene
la dirección del servidor de la cual Docker Engine desea eliminar las credenciales. Este es
un ejemplo de esa carga útil: https://index.docker.io/v1.
El comando erase puede escribir mensajes de error en STDOUT que Docker Engine
mostrará si hubo algún problema.
Helpers de credenciales
Los helpers de credenciales son similares a los almacenes de credenciales, pero actúan como los programas designados para manejar credenciales de registros específicos. El almacén de credenciales por defecto no se utilizará para operaciones relacionadas con las credenciales de los registros especificados.
Configurar helpers de credenciales
Si has iniciado sesión actualmente, ejecuta docker logout para eliminar
las credenciales del almacén por defecto.
Los helpers de credenciales se especifican de manera similar a credsStore, pero
permiten configurar múltiples helpers a la vez. Las claves especifican el dominio del
registro y los valores especifican el sufijo del programa a utilizar (es decir, todo
lo que va después de docker-credential-). Por ejemplo:
{
"credHelpers": {
"myregistry.example.com": "secretservice",
"docker.internal.example": "pass"
}
}Opciones
| Opción | Predeterminado | Descripción |
|---|---|---|
-p, --password | Contraseña o Token de Acceso Personal (PAT) | |
--password-stdin | Toma la Contraseña o Token de Acceso Personal (PAT) desde stdin | |
-u, --username | Nombre de usuario |
Ejemplos
Autenticarse en Docker Hub mediante inicio de sesión basado en la web
Por defecto, el comando docker login se autentica ante Docker Hub utilizando un flujo de
código de dispositivo. Este flujo te permite autenticarte en Docker Hub sin ingresar tu
contraseña. En su lugar, visitas una URL en tu navegador web, ingresas un código y te
autenticas.
$ docker login
USING WEB-BASED LOGIN
To sign in with credentials on the command line, use 'docker login -u <username>'
Your one-time device confirmation code is: LNFR-PGCJ
Press ENTER to open your browser or submit your device code here: https://login.docker.com/activate
Waiting for authentication in the browser…
Después de ingresar el código en tu navegador, te habrás autenticado ante Docker Hub usando la cuenta con la que tienes sesión iniciada actualmente en el sitio web de Docker Hub o en Docker Desktop. Si no has iniciado sesión, se te pedirá que lo hagas después de ingresar el código de dispositivo.
Autenticarse ante un registro hospedado localmente
Si deseas autenticarte ante un registro hospedado localmente (self-hosted), puedes especificarlo añadiendo el nombre del servidor.
$ docker login registry.example.com
Por defecto, el comando docker login asume que el registro escucha en el puerto 443 o 80.
Si el registro escucha en un puerto diferente, puedes especificarlo añadiendo el número de
puerto al nombre del servidor.
$ docker login registry.example.com:1337
NoteLas direcciones de registro no deben incluir componentes de ruta URL, solo el nombre de host y (opcionalmente) el puerto. Las direcciones de registro con componentes de ruta URL pueden provocar un error. Por ejemplo,
docker login registry.example.com/foo/es incorrecto, mientras quedocker login registry.example.comes correcto.La excepción a esta regla es el registro de Docker Hub, que por razones históricas puede usar el componente de ruta
/v1/en la dirección.
Autenticarse ante un registro con un nombre de usuario y contraseña
Para autenticarte ante un registro con un nombre de usuario y contraseña, puedes usar la opción
--username o -u. El siguiente ejemplo se autentica ante Docker Hub con el nombre de usuario
moby. La contraseña se ingresa de forma interactiva.
$ docker login -u moby
Proporcionar una contraseña a través de STDIN (--password-stdin)
Para ejecutar el comando docker login de forma no interactiva, puedes establecer la opción
--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 registros (logs).
El siguiente ejemplo lee una contraseña de un archivo y la pasa al comando docker login
utilizando STDIN:
$ cat ~/my_password.txt | docker login --username foo --password-stdin