Introducción
En este laboratorio, aprenderemos cómo utilizar el comando docker logout para cerrar sesión de forma segura en los registros de Docker. Comenzaremos por entender el propósito del comando docker logout y por qué es importante eliminar las credenciales guardadas. Luego, exploraremos cómo cerrar sesión del registro de Docker predeterminado (Docker Hub) y, finalmente, cómo cerrar sesión de un registro específico que no sea el predeterminado. Este laboratorio práctico lo guiará a través de los pasos prácticos para gestionar sus sesiones de inicio de sesión en el registro de Docker.
Comprender el propósito de docker logout
En este paso, comprenderemos el propósito del comando docker logout. Cuando inicies sesión en un registro de Docker utilizando el comando docker login, tus credenciales se guardan en tu sistema. Esto te permite enviar y descargar imágenes del registro sin tener que volver a ingresar tu nombre de usuario y contraseña cada vez. Sin embargo, por razones de seguridad, especialmente en entornos compartidos o después de terminar tu trabajo, es importante cerrar sesión en el registro. El comando docker logout se utiliza para eliminar estas credenciales guardadas.
Primero, verifiquemos si actualmente estás conectado a algún registro de Docker. Puedes hacer esto intentando descargar una imagen que requiera autenticación o comprobando el archivo de configuración donde Docker almacena las credenciales. La ubicación predeterminada de la configuración de Docker es ~/.docker/config.json.
Puedes ver el contenido de este archivo utilizando el comando cat:
cat ~/.docker/config.json
Si has iniciado sesión, verás una sección como "auths": { ... } que contiene información sobre los registros en los que has iniciado sesión y las credenciales encriptadas. Si no has iniciado sesión, la sección auths puede estar vacía o faltar.
El comando docker logout es sencillo. Cuando se ejecuta sin ningún argumento, te desconecta del registro de Docker predeterminado, que normalmente es Docker Hub.
Simulemos un inicio de sesión (en realidad no nos conectaremos aquí, ya que el enfoque es comprender el cierre de sesión) y luego entendamos cómo funcionaría docker logout. Imagina que acabas de ejecutar docker login. Tu archivo ~/.docker/config.json se actualizaría con tu información de inicio de sesión.
Ahora, para cerrar sesión del registro predeterminado (Docker Hub), simplemente ejecutarías:
docker logout
Después de ejecutar este comando, Docker eliminará las credenciales del registro predeterminado de tu archivo ~/.docker/config.json. Esto significa que tendrás que iniciar sesión nuevamente para enviar o descargar imágenes de Docker Hub que requieran autenticación.
En los siguientes pasos, realmente realizaremos operaciones de inicio y cierre de sesión para ver el efecto del comando docker logout.
Cerrar sesión del registro predeterminado
En este paso, practicaremos el cierre de sesión del registro de Docker predeterminado, que es Docker Hub. Aunque no hemos iniciado sesión explícitamente en este entorno de laboratorio, el comando docker logout está diseñado para eliminar las credenciales existentes. Ejecutar docker logout cuando no estás conectado resultará en un mensaje que indica que no has iniciado sesión. Este es el comportamiento esperado y confirma que el comando está funcionando correctamente para verificar y, potencialmente, eliminar las credenciales.
Primero, intentemos cerrar sesión del registro predeterminado. Abre tu terminal en el directorio ~/project y ejecuta el siguiente comando:
docker logout
Deberías ver una salida similar a esta:
Not logged in to any registry
Este mensaje confirma que no había credenciales guardadas para el registro predeterminado (Docker Hub) en tu archivo ~/.docker/config.json. Si hubieras iniciado sesión, la salida indicaría un cierre de sesión exitoso.
Para comprender mejor el efecto de docker logout, examinemos nuevamente el archivo ~/.docker/config.json después de intentar cerrar sesión.
cat ~/.docker/config.json
Observarás que la sección auths, si existía y contenía credenciales para el registro predeterminado, ahora estaría vacía o la entrada para https://index.docker.io/v1/ se habría eliminado. Dado que no habíamos iniciado sesión, el contenido del archivo debería permanecer igual que antes, probablemente con una sección auths vacía o inexistente.
Este paso demuestra el uso básico de docker logout sin ningún argumento, que se dirige al registro predeterminado de Docker Hub. En el siguiente paso, exploraremos cómo cerrar sesión de un registro específico que no sea el predeterminado.
Cerrar sesión de un registro específico
En este paso, aprenderemos cómo cerrar sesión de un registro de Docker específico que no sea el predeterminado de Docker Hub. Esto es útil cuando trabajas con múltiples registros, como un registro privado de una empresa o un registro de contenedores de un proveedor de servicios en la nube.
Para cerrar sesión de un registro específico, debes proporcionar el nombre de host del registro como argumento al comando docker logout.
Dado que no tenemos un registro privado específico configurado en este laboratorio, usaremos un ejemplo hipotético para demostrar la sintaxis del comando. Imagina que has iniciado sesión en un registro ubicado en my-private-registry.example.com. Para cerrar sesión de este registro específico, usarías el siguiente comando:
docker logout my-private-registry.example.com
Cuando ejecutes este comando, Docker buscará las credenciales asociadas con my-private-registry.example.com en tu archivo ~/.docker/config.json y las eliminará. Si no hubieras iniciado sesión en ese registro específico, Docker te lo informaría.
Simulemos esto intentando cerrar sesión de un registro que no existe. Esto te mostrará la estructura del comando y la salida esperada cuando el registro no se encuentra en tu configuración.
docker logout non-existent-registry.example.com
Probablemente verás una salida similar a esta:
Not logged in to non-existent-registry.example.com
Este mensaje confirma que Docker intentó encontrar y eliminar las credenciales para non-existent-registry.example.com pero no encontró ninguna.
La capacidad de cerrar sesión de registros específicos es importante para gestionar el acceso a diferentes fuentes de imágenes y mantener la seguridad eliminando las credenciales guardadas innecesarias.
En resumen, docker logout sin argumentos te desconecta del Docker Hub predeterminado, mientras que docker logout <registry-hostname> te desconecta de un registro específico.
Resumen
En este laboratorio, aprendimos el propósito del comando docker logout, que es esencial para eliminar las credenciales guardadas de los registros de Docker por razones de seguridad. Comprendimos que después de iniciar sesión con docker login, las credenciales se almacenan en ~/.docker/config.json. Aprendimos cómo verificar este archivo para saber si estamos conectados.
Luego, nos centramos en el propio comando docker logout. Aprendimos que ejecutar docker logout sin argumentos te desconecta del registro de Docker predeterminado (Docker Hub) eliminando sus credenciales del archivo de configuración. Esto asegura que las operaciones posteriores que requieran autenticación con el registro predeterminado necesitarán un nuevo inicio de sesión.



