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

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, Volumes y Networks.
  • Panel principal (derecha): el detalle del elemento seleccionado, organizado en pestañas como Logs, Stats, Env, Config y Top, según el tipo de elemento.

Para moverte:

  • Las flechas izquierda y derecha (o h y l) cambian de panel en la columna izquierda.
  • Las flechas arriba y abajo (o k y j) recorren la lista del panel activo.
  • [ y ] cambian de pestaña en el panel principal.
  • Enter pasa el foco al panel principal para desplazarte por los logs; Esc vuelve.
  • x abre el menú con todas las acciones y atajos disponibles en el panel activo.
  • q sale 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:

TeclaAcción
sDetener el contenedor o servicio
rReiniciar
pPausar o reanudar
dEliminar (pide confirmación)
aAdjuntarse (attach) a la salida del contenedor
EAbrir una shell dentro del contenedor
mVer los logs en modo completo
eMostrar u ocultar contenedores detenidos
bMenú de acciones en bloque
cEjecutar 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.

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.