Cómo iniciar sesión en Docker Hub y registros privados con Docker CLI

Cómo iniciar sesión en Docker Hub y registros privados con Docker CLI

Una instalación nueva de Docker tiene como valor predeterminado las interacciones públicas con Docker Hub. Iniciar sesión le permite acceder a su contenido privado y beneficiarse de l. a. API Docker menos restrictiva límites de tasa.

En esta guía, le mostraremos cómo iniciar sesión en l. a. CLI de Docker, cubriendo tanto l. a. autenticación de Docker Hub como sus propios registros privados. También veremos algunos de los problemas comunes con el almacenamiento de credenciales de Docker.

Iniciar sesión en Docker Hub

Iniciar sesión en Docker Hub permite que l. a. CLI de Docker acceda a contenido privado al que puede acceder su cuenta. También le dará el 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 que se ofrecen a los clientes no autenticados.

Utilizar el docker login comando para proporcionar sus credenciales y autenticarse con el servidor:

$ docker login
Username: 
Password:

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. Verás Login Succeeded si se aceptan los detalles. Docker almacenará el token de autenticación emitido en su .docker/config.json expediente.

$ docker login

Login Succeeded

Tokens de acceso para inicios de sesión 2FA

Las cuentas de Docker Hub con autenticación de dos factores habilitada deben usar un token de acceso en lugar de una contraseña. Con l. a. interfaz de usuario internet de Docker Hub, haga clic en el icono de su perfil en l. a. esquina awesome derecha y elija “Configuración de l. a. cuenta” en el menú. Use l. a. barra lateral izquierda para cambiar a l. a. pestaña “Seguridad”.

imagen de la creación de un token de acceso a Docker Hub

Haga clic en el botón azul “Nuevo token de acceso” para crear un token de acceso private. Tenga cuidado de anotar l. a. clave del token que se muestra, ya que no podrá recuperarla en el futuro. Use este token en lugar de su contraseña recurring cuando ejecute docker login de vuelta en l. a. CLI.

Inicios de sesión no interactivos

Puede proporcionar su nombre de usuario y contraseña como indicadores de línea de comandos:

$ docker login --username demo --password instance

Esto es útil cuando inicia sesión mediante programación o como parte de una canalización de CI. Para aumentar l. a. seguridad, utilice el --password-stdin bandera para indicarle a Docker que lea su contraseña de STDIN. Esto le permite canalizar un archivo de contraseñas, lo que evita que se seize texto sin formato en el historial de shell y en los registros de trabajos de CI.

$ cat password.txt | docker login --username demo --password-stdin

Iniciar sesión en registros privados

docker login también le permite iniciar sesión en registros autohospedados. Proporcione el nombre de host y el puerto de su registro como primer argumento del comando. Docker Hub siempre se u.s. cuando no se proporciona ningún argumento.

$ docker login registry.instance.com
Username: 
Password:

Todavía puedes usar el --username, --passwordy --password-stdin banderas cuando se trabaja con registros personalizados. Puede iniciar sesión en varios registros simultáneamente: repita el docker login Comando tantas veces como necesites.

Adición handbook de credenciales

A veces, es posible que desee iniciar sesión manualmente en un registro agregando un token de autenticación existente al archivo de configuración de Docker. Esto puede ser útil en entornos de CI en los que le gustaría proporcionar un token obtenido previamente como variable de canalización.

Puede agregar tokens de autenticación usted mismo editando su .docker/config.json expediente. Agregue una nueva clave para su registro dentro de l. a. auths campo en l. a. parte awesome del archivo. Proporcione un objeto como el valor de l. a. clave; este objeto necesita un solo auth propiedad que contiene su token. Aquí hay un ejemplo para el registry.instance.com registro:

{
    "auths": {
        "registry.instance.com": {
            "auth": "aWxtaW9ud..."
        }
    }
}

Puede agregar un token de Docker Hub usando https://index.docker.io/v1/ como URL de registro.

Múltiples cuentas para un registro

Una limitación significativa del mecanismo de autenticación es su requisito de que los registros se asignen uno a uno con las cuentas de los usuarios. De forma nativa, no es posible iniciar sesión simultáneamente con varios usuarios en el mismo registro. Esto suele ser conveniente cuando se utiliza un registro privado que separa los permisos en proyectos o equipos.

Puede mitigar el problema dividiendo sus credenciales en varios archivos de configuración. Los angeles CLI de Docker utiliza el --config bandera o DOCKER_CONFIG variable de entorno para determinar el archivo a cargar para cada invocación.

# Authenticate as user-1
$ docker --config ~/docker/user-1.conf login registry.instance.com --username user-1 --password foobar

# Authenticate as user-2
$ docker --config ~/docker/user-2.conf login registry.instance.com --username user-2 --password foobar

# Pull a picture from registry.instance.com as user-1
$ docker --config ~/docker/user-1.conf pull my-team/my-project:newest

# Push a picture to registry.instance.com as user-2
$ docker --config ~/docker/user-2.conf push my-team/my-project:newest

Cuando tiene muchos proyectos con los que trabajar, puede usar un alias de shell o una función para reescribir docker a un comando que selecciona automáticamente el archivo de configuración correcto para su directorio de trabajo.

alias docker="docker --config ~/docker/$(basename $PWD).conf $1"

Ayudantes de credenciales

Docker almacena sus credenciales de forma insegura en ~/.docker/config.json por defecto. Puede agregar más protección integrando un ayudante de credenciales utilidad. Los ayudantes habilitados pueden manejar l. a. credencial retailer, gety erase comandos emitidos por Docker en respuesta a operaciones CLI.

Puede asociar un registro con una utilidad de ayuda specific usando el credHelpers campo en su archivo de configuración:

{
    "credHelpers": {
        "registry.instance.com": "cross"
    }
}

Este ejemplo utiliza el cross ayudante de credenciales para almacenar credenciales para registry.instance.com en Cross en lugar del archivo de configuración. El ayudante de Cross se proporciona como parte de Docker docker-credential-helpers paquete que también incluye integraciones con el llavero de macOS, el administrador de credenciales de Home windows y el servicio secreto D-Bus.

Saliendo de tu cuenta

Puede cerrar l. a. sesión eliminando manualmente l. a. sección del registro de su .docker/config.json archivo o usando el docker logout dominio.

$ docker logout

Me gusta docker login, cierra l. a. sesión de destino de Docker Hub de forma predeterminada. Puede cerrar l. a. sesión de un registro privado pasando su nombre de host como único argumento del comando:

$ docker logout registry.instance.com

Problemas comunes

Los angeles mayoría de los problemas de autenticación de Docker se deben a credenciales faltantes o no válidas. Si ha iniciado sesión anteriormente pero l. a. autenticación no funciona, intente cerrar l. a. sesión y volver a iniciarla:

$ docker logout
# OR
$ docker logout registry.instance.com

$ docker login
# OR
$ docker login registry.instance.com

Las credenciales rechazadas constantemente podrían indicar un problema con su cuenta de registro. En el caso de Docker Hub, verifique que haya seguido l. a. guía anterior para usar un token de acceso private en lugar de una contraseña con cuentas protegidas con 2FA.

Los angeles confusión también puede ocurrir cuando tiene varios archivos de configuración de Docker. Comprueba que estás usando el --config bandera o DOCKER_CONFIG variable de entorno para cargar l. a. correcta cada vez que empuja y extrae sus imágenes.

Resumen

Conseguir que l. a. CLI de Docker se conecte a su cuenta de Docker Hub o a un registro privado generalmente se maneja mejor con el docker login dominio. Puede proporcionar credenciales de forma interactiva, como indicadores o a través de un archivo de contraseña canalizado. Asegúrese de usar un token de acceso private en lugar de su contraseña si tiene habilitada l. a. autenticación de dos factores.

Aunque existe un soporte perfecto para l. a. autenticación en varios registros, trabajar con varias cuentas de un registro es más engorroso. Intente usar archivos de configuración separados cuando sea posible o configure su registro con cuentas de usuario de alcance especial apropiadas para cada uno de sus entornos.