Lazydocker es una interfaz de terminal (TUI) escrita en Go que muestra en una sola pantalla tus contenedores, servicios de Docker Compose, imágenes, volúmenes y redes, con sus logs y el consumo de recursos en tiempo real. Es especialmente útil por SSH, donde no tienes Docker Desktop ni un panel web. En este tutorial instalarás Lazydocker en Ubuntu 24.04 desde las releases oficiales, lo usarás con un pequeño proyecto de Docker Compose y lo adaptarás con un archivo de configuración y un comando personalizado.
Requisitos previos
Para seguir esta guía necesitas:
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath.
- Un usuario no root con privilegios
sudo. - Docker Engine y el plugin de Docker Compose instalados desde el repositorio oficial de Docker.
- Una terminal de al menos 100 columnas de ancho para que los paneles se vean bien.
Paso 1: Permitir que tu usuario use Docker sin sudo
Lazydocker habla con el daemon de Docker a través del socket /var/run/docker.sock, igual que el cliente docker. Si tu usuario no tiene acceso al socket, Lazydocker arrancará sin mostrar nada o con un error de permisos. Añade tu usuario al grupo docker:
sudo usermod -aG docker $USER
Advertenciapertenecer al grupo
dockerequivale en la práctica a tener acceso root en el servidor, porque se puede lanzar un contenedor que monte/. Añade solo usuarios de confianza.
Cierra la sesión SSH y vuelve a entrar para que se aplique el nuevo grupo. Comprueba que puedes hablar con Docker sin sudo:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Si ves la cabecera de la tabla sin errores, tienes acceso al daemon.
Paso 2: Instalar Lazydocker desde las releases oficiales
Lazydocker no está en los repositorios de Ubuntu. El proyecto publica binarios estáticos en GitHub, así que descargarás la última versión, verificarás su suma de comprobación e instalarás el binario en /usr/local/bin.
Obtén el número de la última versión publicada desde la API de GitHub:
LAZYDOCKER_VERSION=$(curl -s https://api.github.com/repos/jesseduffield/lazydocker/releases/latest | grep -Po '"tag_name": *"v\K[^"]*')
echo "$LAZYDOCKER_VERSION"
0.24.1
El número exacto puede ser mayor cuando leas esto. Descarga el archivo para tu arquitectura y el fichero de sumas de comprobación. En servidores x86_64 usa Linux_x86_64; en servidores ARM, cambia ese sufijo por Linux_arm64:
cd /tmp
curl -LO "https://github.com/jesseduffield/lazydocker/releases/download/v${LAZYDOCKER_VERSION}/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz"
curl -LO "https://github.com/jesseduffield/lazydocker/releases/download/v${LAZYDOCKER_VERSION}/checksums.txt"
Verifica que el archivo descargado coincide con la suma publicada:
sha256sum --ignore-missing -c checksums.txt
lazydocker_0.24.1_Linux_x86_64.tar.gz: OK
Extrae el binario e instálalo con los permisos correctos:
tar xf "lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz" lazydocker
sudo install -m 0755 lazydocker /usr/local/bin/lazydocker
Comprueba la instalación:
lazydocker --version
Version: 0.24.1
Date: ...
BuildSource: binaryRelease
Commit: ...
OS: linux
Arch: amd64
Para actualizar Lazydocker en el futuro, repite este paso: el nuevo binario sustituye al anterior.
Paso 3: Crear un proyecto de prueba con Docker Compose
Para ver todos los paneles con contenido, levanta un pequeño proyecto con un servidor web y una base de datos Redis. Crea un directorio para él:
mkdir -p ~/demo-lazydocker
cd ~/demo-lazydocker
Crea el archivo de Compose:
nano compose.yaml
services:
web:
image: nginx:stable-alpine
ports:
- "127.0.0.1:8080:80"
restart: unless-stopped
cache:
image: redis:7-alpine
restart: unless-stopped
El puerto se publica solo en 127.0.0.1 para no exponer el contenedor de prueba a Internet. Arranca el proyecto:
docker compose up -d
Comprueba que ambos servicios están en marcha:
docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
demo-lazydocker-cache-1 redis:7-alpine "docker-entrypoint.s…" cache 10 seconds ago Up 9 seconds 6379/tcp
demo-lazydocker-web-1 nginx:stable-alpine "/docker-entrypoint.…" web 10 seconds ago Up 9 seconds 127.0.0.1:8080->80/tcp
Paso 4: Recorrer la interfaz de Lazydocker
Lanza Lazydocker desde el directorio del proyecto. Cuando lo abres en un directorio con un archivo de Compose, detecta el proyecto y muestra también el panel de servicios:
lazydocker
La pantalla se divide en dos zonas:
- Columna izquierda: los paneles
Project,Services(solo si hay un proyecto de Compose),Containers,Images,VolumesyNetworks. - Panel principal (derecha): el detalle del elemento seleccionado, organizado en pestañas como
Logs,Stats,Env,ConfigyTop, según el tipo de elemento.
Para moverte:
- Las flechas izquierda y derecha (o
hyl) cambian de panel en la columna izquierda. - Las flechas arriba y abajo (o
kyj) recorren la lista del panel activo. [y]cambian de pestaña en el panel principal.Enterpasa el foco al panel principal para desplazarte por los logs;Escvuelve.xabre el menú con todas las acciones y atajos disponibles en el panel activo.qsale de Lazydocker.
También puedes usar el ratón para seleccionar paneles y elementos si tu terminal lo admite.
Selecciona el servicio web y abre la pestaña Logs. Desde otra terminal genera algo de tráfico:
curl -s http://127.0.0.1:8080 > /dev/null
La línea de acceso de Nginx aparece al momento en el panel de logs, sin tener que ejecutar docker compose logs -f.
Paso 5: Gestionar contenedores y servicios
Las acciones se lanzan con una sola tecla sobre el elemento seleccionado. Estos son los atajos más usados en los paneles Containers y Services:
| Tecla | Acción |
|---|---|
s | Detener el contenedor o servicio |
r | Reiniciar |
p | Pausar o reanudar |
d | Eliminar (pide confirmación) |
a | Adjuntarse (attach) a la salida del contenedor |
E | Abrir una shell dentro del contenedor |
m | Ver los logs en modo completo |
e | Mostrar u ocultar contenedores detenidos |
b | Menú de acciones en bloque |
c | Ejecutar un comando personalizado |
En el panel Services tienes además u para levantar un servicio y U o D para levantar o bajar todo el proyecto (equivalentes a docker compose up -d y docker compose down).
Prueba a reiniciar la caché: selecciona cache y pulsa r. En la pestaña Stats del panel principal verás el uso de CPU y memoria del contenedor actualizándose en tiempo real, útil para detectar un contenedor que consume más de lo esperado.
Para limpiar recursos sin usar, ve al panel Images y pulsa b: el menú en bloque permite eliminar las imágenes huérfanas, el equivalente a docker image prune. Los paneles Volumes y Networks ofrecen la misma opción para volúmenes y redes.
Notasi la tecla de un atajo no hace nada, pulsa
xen ese panel. El menú muestra los atajos reales de tu versión, que pueden variar ligeramente entre releases.
Paso 6: Personalizar Lazydocker con config.yml
Lazydocker lee su configuración de ~/.config/lazydocker/config.yml. Puedes ver la configuración por defecto completa, con todas las claves disponibles, con:
lazydocker --config
Crea el directorio y el archivo de configuración:
mkdir -p ~/.config/lazydocker
nano ~/.config/lazydocker/config.yml
Este ejemplo muestra marcas de tiempo en los logs, limita el historial que se carga al abrir un contenedor, cambia los colores del borde activo y añade un comando personalizado para abrir sh en contenedores que no tienen bash, como las imágenes Alpine:
gui:
theme:
activeBorderColor:
- cyan
- bold
inactiveBorderColor:
- white
logs:
timestamps: true
since: '1h'
tail: '500'
customCommands:
containers:
- name: 'shell sh'
attach: true
command: 'docker exec -it {{ .Container.ID }} sh'
Cierra Lazydocker con q y ábrelo de nuevo para cargar los cambios. Selecciona el contenedor web, pulsa c y elige shell sh: se abrirá una shell dentro del contenedor. Escribe exit para volver a Lazydocker.
Si el archivo contiene un error de sintaxis YAML, Lazydocker muestra el error al arrancar y no se abre; corrige la línea indicada y vuelve a intentarlo.
Paso 7: Limpiar el proyecto de prueba
Cuando termines de practicar, elimina los contenedores y la red del proyecto de ejemplo:
cd ~/demo-lazydocker
docker compose down
Comprueba que ya no quedan contenedores del proyecto:
docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
Solución de problemas
permission denied while trying to connect to the Docker daemon socket: tu usuario no está en el grupo docker o no has vuelto a iniciar sesión tras añadirlo. Ejecuta id y comprueba que aparece docker en la lista de grupos.
No aparece el panel Services: Lazydocker solo detecta el proyecto si lo lanzas desde el directorio que contiene compose.yaml (o docker-compose.yml). Haz cd al directorio del proyecto antes de ejecutarlo.
La interfaz se ve cortada o con caracteres extraños: amplía la ventana de la terminal y asegúrate de que usa UTF-8 (echo $LANG debería devolver algo como es_ES.UTF-8 o C.UTF-8).
Conclusión
Has instalado Lazydocker en Ubuntu 24.04 desde las releases oficiales verificadas, lo has usado para revisar logs, estadísticas y el ciclo de vida de un proyecto de Docker Compose, y lo has adaptado con un archivo de configuración y un comando propio. Como siguientes pasos, puedes añadir más customCommands para tareas habituales (por ejemplo, un volcado de base de datos), revisar la seguridad de tu instalación de Docker con Docker Bench for Security o limitar CPU y memoria de tus servicios en compose.yaml y vigilar el efecto desde la pestaña Stats.
