A keyboard-first Docker dashboard for the terminal.
Manage containers, images, volumes, networks, and compose projects without leaving your shell.
Switching between Docker commands and a GUI breaks focus. docker-dash keeps the feedback loop tight with a fast terminal interface for inspecting, filtering, and managing your Docker environment.
- Stay in the terminal instead of bouncing between tools
- Troubleshoot faster with logs, details, and exec access close at hand
- Work with local or remote Docker hosts, including SSH-based setups
- Manage compose projects alongside containers, images, volumes, and networks
- Develop without a Docker daemon thanks to the built-in mock client fallback
- Browse and manage containers, images, volumes, networks, and compose projects
- Inspect container logs, stats, details, and files interactively
- Start, stop, restart, and remove containers and compose projects
- Exec into running containers without leaving the TUI
- Filter resources quickly and inspect image layers
- Clean up unused resources with prune actions
- Check for image updates from the registry on a configurable interval and pull updates in one keystroke
Homebrew:
brew tap GustavoCaso/tap
brew install docker-dashGo:
go install github.com/GustavoCaso/docker-dash/cmd/docker-dash@latestBuild from source:
make builddocker-dash- Move between sections with
β / β - Filter the current list with
/ - Refresh with
rand open help with? - Manage resources with contextual actions such as
s,D,P,+, andc
- Developers who live in the terminal
- Docker users who want a faster feedback loop than memorizing many commands
- Remote and homelab workflows where SSH Docker hosts are common
- Anyone who wants quick visibility into running services, logs, and container state
Use the containers view to inspect logs and details, restart with ctrl+R, or start and stop with s.
Prune unused containers, images, networks, and volumes directly from the relevant section with P.
Pass a Docker host on the command line:
docker-dash --docker.host ssh://user@example-hostOr set it in your config file for everyday use.
By default, docker-dash looks for a config file at ~/.config/docker-dash/config.toml.
[docker]
# Docker daemon URL. Accepts tcp, unix, and ssh schemes.
# Defaults to the DOCKER_HOST environment variable.
host = "ssh://pi5@pi5"
[refresh]
# Auto-refresh interval
# Examples: "500ms", "5s", "1m", "2m30s"
interval = "10s"
[debug]
enabled = false
[update_check]
# Check the remote registry for newer image versions on a configurable interval.
# When an update is available, a β¬ icon appears next to the image in the list.
# Press "u" in the Images section to pull the update directly.
enabled = false
# Polling interval. Examples: "30m", "1h", "6h"
interval = "1h"| Flag | Description |
|---|---|
--config |
Path to config file (default: ~/.config/docker-dash/config.toml) |
--docker.host |
Docker daemon URL (overrides config file) |
--refresh.interval |
Auto-refresh interval (overrides config file) |
--debug |
Enable debug logging (overrides config file) |
CLI flags take precedence over config values.
When debug mode is enabled, docker-dash writes a debug log file to the system temporary directory.
Press ? in the app to see the full keymap. The most commonly used bindings are:
| Key | Action |
|---|---|
β / β |
Switch section |
β / β |
Move selection |
shift+β / shift+β |
Switch panels |
j / k |
Scroll down/up |
/ |
Filter |
r / ctrl+r |
Refresh current view / refresh all |
? |
Toggle help |
q |
Quit |
Contextual actions depend on the active section. For example:
sstarts or stops containers and compose projectsDdeletes containers and networks, or brings compose projects downPprunes unused resources+pulls an imageccreates and runs a container from an imageupulls an image update (Images section) or brings a compose project up (Compose section)
Full keybindings by section
| Key | Action |
|---|---|
d |
Delete image |
P |
Prune all unused images |
c |
Create and run container |
+ |
Pull image |
u |
Pull image update (requires update_check.enabled = true; β¬ icon indicates update available) |
| Key | Action |
|---|---|
D |
Delete container |
P |
Prune unused container |
p |
pause/unpause container |
s |
Start/stop |
ctrl+R |
Restart |
| Key | Action |
|---|---|
d |
Delete volume |
P |
Prune all unused volumes |
| Key | Action |
|---|---|
P |
Prune unused networks |
D |
Delete network |
| Key | Action |
|---|---|
u |
Compose up |
D |
Compose down |
s |
Start/stop project |
ctrl+R |
Restart project |
| Key | Action |
|---|---|
r |
Refresh |
ctrl+r |
Refresh all |
make test # Run tests
make lint # Run linter
make build # Build binaryTests use a mock Docker client, so no Docker daemon is required.
- Go 1.26+
- Docker (optional β falls back to mock data without it)
