Cómo iniciar sesión en Docker Hub y registros privados mediante Docker CLI
Una instalación nueva de Docker tiene como valor predeterminado la interacción pública con Docker Hub. Después de iniciar sesión, puede acceder a su contenido privado y beneficiarse de una API Docker menos restrictiva Límite de tarifa.
En esta guía, le mostraremos cómo iniciar sesión en la CLI de Docker, cubriendo la autenticación de Docker Hub y su propio registro privado. También veremos algunos problemas comunes con el almacenamiento de credenciales de Docker.
Iniciar sesión en Docker Hub
Iniciar sesión en Docker Hub le otorga a la CLI de Docker acceso a contenido privado al que puede acceder su cuenta. También le dará un umbral de límite de tasa más alto de 200 extracciones de imágenes por seis horas en lugar de las 100 extracciones por seis horas para clientes no autenticados.
usardocker login
comando para proporcionar sus credenciales y autenticarse en el servidor:
$ inicio de sesión de docker nombre de usuario: contraseña:
Se le pedirá que ingrese su nombre de usuario y contraseña de forma interactiva. Docker intentará iniciar sesión en Docker Hub con las credenciales.ya verásLogin Succeeded
Si se aceptan los detalles. Docker almacenará el token de autenticación emitido en su.docker/config.json
en el archivo.
$ inicio de sesión docker inicio de sesión exitoso
Token de acceso para inicio de sesión 2FA
Una cuenta de Docker Hub con autenticación de dos factores habilitada requiere un token de acceso en lugar de una contraseña. Con la interfaz de usuario web de Docker Hub, haga clic en el icono de su perfil en la esquina superior derecha y seleccione Configuración de la cuenta en el menú. Cambie a la pestaña Seguridad usando la barra lateral izquierda.
Haga clic en el botón azul Nuevo token de acceso para crear un token de acceso personal. Tenga cuidado de anotar la clave del token que se muestra, ya que no podrá recuperarla más tarde.docker login
Cuando estás en la CLICuando se ejecute, use este token en lugar de su contraseña habitual.
inicio de sesión no interactivo
Puede proporcionar su nombre de usuario y contraseña como indicadores de línea de comando:
$ docker login --username demo --password Ejemplo
Esto es útil cuando inicia sesión mediante programación o como parte de una canalización de CI. Para mayor seguridad, utilice el--password-stdin
flag indica a Docker que comience desdeSTDIN
. Esto le permite canalizar el archivo de contraseñas, lo que evita que se capture texto sin formato en el historial de shell y en los registros de trabajo de CI.
$ gato contraseña.txt |inicio de sesión de docker --demostración de nombre de usuario --password-stdin
Ingresar al Registro Privado
docker login
También le permite iniciar sesión en un registro autohospedado. Proporcione el nombre de host y el puerto del registro como primer argumento del comando. Cuando no se dan argumentos, siempre se usa Docker Hub.
$ inicio de sesión docker registro.example.com nombre de usuario: contraseña:
Al usar un registro personalizado, aún puede usar--username
,--password
y--password-stdin
señal. Puede iniciar sesión en varios registros al mismo tiempo——docker login
Repita el comando tantas veces como sea necesario.
Agregar credenciales manualmente
En ocasiones, es posible que desee iniciar sesión manualmente en el registro agregando un token de autenticación existente al archivo de configuración de Docker. Esto es útil en un entorno de CI en el que desea proporcionar un token obtenido previamente como variable de canalización.
Puedes editar el.docker/config.json
El archivo agrega el propio token de autenticación.auths
en el campo en la parte superior del archivoAgregue una nueva clave a su registro. Proporcione un objeto como el valor de la clave;Este objeto requiere unauth
Contiene propiedades para su token.registry.example.com
este es el registroUn ejemplo de:
{ "auths": { "registry.example.com": { "auth": "aWxtaW9ud..."}}}
puedes usarlohttps://index.docker.io/v1/
URL de registro Agregar token de Docker Hub.
Múltiples cuentas con un registro
Una limitación importante del mecanismo de autenticación es que requiere una asignación uno a uno del registro a las cuentas de usuario. El inicio de sesión simultáneo de múltiples usuarios en el mismo registro es inherentemente imposible. Esto suele ser recomendable cuando utiliza registros privados que separan los permisos en proyectos o equipos.
Puede mitigar esto dividiendo las credenciales en varios archivos de configuración. Uso de la CLI de Docker--config
firmar oDOCKER_CONFIG
variable de entorno para determinar qué archivos cargar para cada invocación.
# Autenticar como usuario-1 $ ventana acoplable --config ~/docker/usuario-1.conf inicio de sesión registro.ejemplo.com --nombre de usuario usuario-1 --contraseña foobar # Autenticar como usuario-2 $ ventana acoplable --config ~ /docker /usuario-2.conf inicio de sesión registro.ejemplo.com --nombre de usuario usuario-2 --contraseña foobar# Extraiga una imagen de registro.ejemplo.com como usuario-1$ docker --config ~/docker/usuario-1.conf pull my-team/my-project:latest# Empuje la imagen a registration.example.com como user-2$ docker --config ~/docker/user-2.conf push my-team/my-project:latest
Cuando tiene muchos elementos para procesar, puede usar alias o funciones de shell para anulardocker
Un comando que selecciona automáticamente el archivo de configuración correcto para su directorio de trabajo.
alias docker="docker --config ~/docker/$(nombre base $PWD).conf $1"
asistente de credenciales
~/.docker/config.json
por defecto, Docker no almacena sus credenciales de forma segura. Puede hacer esto integrando un asistente de credenciales utilidad. Los ayudantes habilitados pueden manejarCredenciales emitidas por Docker en respuesta a operaciones CLIstore
,get
y mando.erase
credHelpers
Puede utilizar el archivo de configuraciónEl campo asocia el registro con una utilidad auxiliar específica:
{ "credHelpers": { "registry.example.com": "pass" }}
Este ejemplo utilizapass
El ayudante de credenciales almacena las credencialesregistry.example.com
para Pasar en lugar del archivo de configuración. Pass Helper se proporciona como parte de Docker docker-credential-helpers
El paquete también incluye integraciones con Keychain para macOS, Credential Manager para Windows y D-Bus Secret Service.
cerrar sesión
.docker/config.json
Puede hacerlo eliminando manualmente la sección de registro del archivo o usandodocker logout
Ordenarpara cerrar sesión
$ cierre de sesión de la ventana acoplable
es lo mismo quedocker login
, de forma predeterminada, el destino de cierre de sesión es Docker Hub. Puede anular el registro de un registro privado pasando su nombre de host como el único argumento del comando:
$ docker cerrar sesión registro.ejemplo.com
problema comun
La mayoría de los problemas de autenticación de Docker se deben a credenciales faltantes o no válidas. Si ya había iniciado sesión pero la autenticación no funcionó, intente cerrar la sesión y volver a iniciarla:
$ inicio de sesión de docker# o $ registro de inicio de sesión de docker.example.com $ inicio de sesión de docker# o $ registro de inicio de sesión de docker.example.com
La denegación persistente de credenciales podría indicar un problema con su cuenta de registro. En el caso de Docker Hub, verifique que siga la guía anterior para usar un token de acceso personal en lugar de una contraseña con cuentas protegidas 2FA.
También puede surgir confusión cuando tiene varios archivos de configuración de Docker. Cada vez que se empuja y tira de una imagen, laPor favor, compruebe si está utilizando--config
banderas o variables de entorno para cargar las banderas o variables de entorno correctas.DOCKER_CONFIG
resumir
La mejor forma de conectar la CLI de Docker a su cuenta de Docker Hub o registro privado esdocker login
procesamiento de comandos. Puede proporcionar credenciales de forma interactiva, como indicadores o a través de un archivo de contraseña canalizado. Si la autenticación de dos factores está habilitada, asegúrese de usar un token de acceso personal en lugar de una contraseña.
Si bien la autenticación en varios registros se admite sin problemas, el uso de varias cuentas con un registro es más engorroso. Siempre que sea posible, intente utilizar archivos de configuración independientes o configure el registro con cuentas de usuario de ámbito especial que se apliquen a cada entorno.