I Use lazydocker for Everything — Except When I Don't

Published: (May 29, 2026 at 03:36 AM EDT)
5 min read
Source: Dev.to

Source: Dev.to

dockervis – A Minimal Docker Dashboard

I love lazydocker. Honestly, Jesse Duffield built something special — it’s the first thing I install on a new machine. But 90 % of the time I open it I just want to check if my containers are healthy. I don’t need to browse image layers, scroll through compose configs, or dig into volume mounts. I just want the pulse check.

Sometimes lazydocker feels like opening a control room when you only need a dashboard.

So I built dockervis – a terminal dashboard that does one thing: show you what your Docker containers are doing right now and let you act on it with a single key‑press.


The Problem I Was Solving

My typical workflow looks like this:

  1. Start 4‑5 containers with docker compose.
  2. Something feels off — API is slow, or a cron job might’ve crashed.
  3. Open a terminal, type docker ps, squint at the truncated output.
    Copy a container ID, run docker stats --no-stream.
  4. Realize it was the wrong container.
  5. Repeat.

docker stats is a firehose. docker ps doesn’t show resource usage. Jumping between them gets old fast when you’re debugging at 2 am.

lazydocker solves this, but it also shows every image, every volume, every compose file — when I just want to know if my app container is eating all the RAM again.


What dockervis Does

npm install -g dockervis
dockervis

The tool launches in fullscreen mode (press q to quit).
The dashboard looks like this:

┌─────────────────────────────────────────────────────────────┐
│ dockervis - Docker Container Dashboard                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ● app (running)           CPU: 1.2%                        │
│ ● db (running)            Memory: 256 MB / 512 MB (50.0%) │
│ ○ web (exited)            Network RX: 1.2 GB               │
│ ● redis (running)         Network TX: 512 MB               │
│                                                             │
└─────────────────────────────────────────────────────────────┘
q: Quit | r: Refresh | s: Stop | R: Restart | d: Delete

Every container, its state, CPU, memory, and network usage are updated live. No mouse needed, no panels to navigate — just the info you care about.


Keyboard Shortcuts That Actually Matter

KeyWhat it does
j / Move down
k / Move up
sStop container
RRestart container
dDelete (exited only)
rForce refresh
qQuit

Vim‑style navigation because, well, muscle memory.

Typical flow:
When something’s stuck: j → select → R → restart → done.
When a container exited and you want it gone: k/j → select → d.


Filtering When You Have Too Many Containers

On my work machine I have ~20 containers, many from old projects I forgot to clean up. I don’t need to see all of them.

# Only show running ones
dockervis --filter running

# Focus on specific services
dockervis --include app,db,redis

# Hide the noise
dockervis --exclude test,ci

The --exclude flag is my favorite – it removes test containers I never touch, making the dashboard actually useful.


Exporting Metrics (Because Sometimes You Need Proof)

Sometimes you need to show someone “this container has been eating 80 % CPU for three days,” or you want to log metrics over time.

# JSON export
dockervis --export metrics.json

# CSV if you need to throw it in a spreadsheet
dockervis --export metrics.csv --export-format csv

I use this in CI: run once, dump to JSON, parse with jq in a health‑check script. Not glamorous but it works.


Why TypeScript (And Not Go Like Everyone Else)

Most terminal Docker tools are written in Go — lazydocker, ctop, docui. Nothing wrong with Go, but I write TypeScript all day. When I want to fix something or add a feature, I want to do it in the language I’m fastest in.

dockervis uses:

  • dockerode – battle‑tested Docker API client.
  • blessed – terminal UI library (the same family that lazydocker uses via tview/bubbletea equivalents).

The result is a tool that TypeScript/Node developers can actually contribute to without learning a new language. Installation is just npm install -g — no Go toolchain needed.


When I Still Reach for lazydocker

dockervis isn’t a full replacement for lazydocker. I still reach for lazydocker when I need to:

  • Browse Docker Compose configs
  • Inspect image layers
  • Manage volumes and networks
  • Read container logs in detail

For the 5‑second “is everything okay?” check or the “restart that one container real quick” moment, dockervis is faster and less noisy.


Quick Setup

# Install
npm install -g dockervis

# Make sure you have Docker socket access
sudo usermod -aG docker $USER   # (log out and back in)

# Run it
dockervis

Optional tweaks

Change refresh interval (default 2 s):

dockervis --interval 5000   # 5 seconds

Connect to a remote Docker host:

DOCKER_HOST=tcp://192.168.1.100:2375 dockervis

The Code

It’s open source, MIT licensed: github.com/sulthonzh/dockervis

Issues and PRs are welcome. I mainly tested on macOS + Docker Desktop, so Linux and Windows reports are especially appreciated.

Would be helpful.

* Building developer tools is my thing.  
  Check out my other projects at [github.com/sulthonzh](https://github.com/sulthonzh)
0 views
Back to Blog

Related posts

Read more »