Cómo usar el comando docker logout para cerrar sesión de un registro

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/login("Log into Docker Registry") docker/SystemManagementGroup -.-> docker/logout("Log out from Docker Registry") subgraph Lab Skills docker/login -.-> lab-555167{{"Cómo usar el comando docker logout para cerrar sesión de un registro"}} docker/logout -.-> lab-555167{{"Cómo usar el comando docker logout para cerrar sesión de un registro"}} end

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.