lazydocker: manage containers, compose, images and volumes in one terminal screen
TL;DR
lazydocker puts everyday docker commands into one UI: m for logs, E to exec a shell, r to restart, [ ] to switch Stats/Logs tabs, b to clean images and volumes. Deletions are real, so read before confirming.
Working with Docker every day means constantly typing docker ps, copying container IDs, docker logs -f, docker exec -it ... sh, docker compose restart, then cleaning up stale images. Each step is simple, but together they eat a lot of time. lazydocker (by the author of lazygit) puts all of it in one terminal UI: containers, compose services, images and volumes at once, live logs and CPU/RAM graphs, and single-key actions.

Installation
brew install lazydocker # macOS
# Linux: install script from the README
curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
go install github.com/jesseduffield/lazydocker@latest
lazydocker # run in a directory with docker-compose.yml to see services too
Tip: add alias lzd='lazydocker' to your .zshrc.
Screen layout
The left side lists Project, Services (from docker compose), Containers, Images and Volumes. The right side is the main panel with tabs for the selected item: Logs, Stats (CPU and memory graphs), Env, Config, Top. Use [ and ] to switch tabs, / to filter a list, enter to focus the main panel.
Main shortcuts
| Key | Container | Service (compose) |
|---|---|---|
s | Stop | Stop |
r | Restart | Restart |
d | Remove | Remove the service's containers |
E | Exec a shell inside | Exec a shell inside |
a | Attach | Attach |
m | View logs | View logs |
w | Open browser on the first port | Open browser |
u / U / D | — | Up service / up project / down project |
b | Bulk commands | Bulk commands |
The b key (bulk commands) in the Images and Volumes panels is handy for pruning unused images when the disk fills up.
Customisation
- Press
oin the Project panel to open the config file,eto edit it. - Add custom commands for repetitive actions, such as running migrations in a container, then trigger them with
c. - Change the default compose command if you use
docker compose(v2) rather than the olddocker-compose.
Caveats
- lazydocker calls the Docker API with your permissions; removing containers or pruning volumes is real, and volume data can be lost.
- It doesn't replace production monitoring: it suits dev machines and small servers.
- You can run lazydocker in a container (the README has a
docker runcommand mountingdocker.sock), but mounting the socket gives that container full control of Docker.
How to apply it
- Dev: When running a multi-service stack with compose, keep lazydocker open to follow each service's logs and quickly restart the one you just changed.
- Tech Lead: Show new developers lazydocker so they see how services interact, instead of memorising dozens of docker commands.
- PM: Less "the environment won't start" time for new developers, because each service's errors are right there in the log panel.
Sources & references
- jesseduffield/lazydocker — jesseduffield (GitHub)