README
ΒΆ
⬑ docker-tui
Your Docker host, on one screen.
A fast, keyboard-first terminal UI for Docker. Monitor, inspect, log, and control
containers, images, volumes, and networks β without juggling long docker commands.

β‘ Install in one line
Prebuilt static binaries β no Go, no dependencies. Just a running Docker daemon.
π§ Linux Β· π macOS
curl -fsSL https://raw.githubusercontent.com/Akib558/docker-tui/main/scripts/install.sh | sh
πͺ Windows (PowerShell)
irm https://raw.githubusercontent.com/Akib558/docker-tui/main/scripts/install.ps1 | iex
πΉ With Go
go install github.com/Akib558/docker-tui@latest
Then just run:
docker-tui
The one-line installers pull the latest release from GitHub. See Installation for manual downloads and building from source.
Why docker-tui
Docker's CLI is powerful, but day-to-day container work means repeating the same status checks, log tails, restarts, and inspects. docker-tui folds all of that into one responsive, keyboard-driven screen that feels right at home over SSH.
| Instead of⦠| With docker-tui |
|---|---|
docker ps + docker stats in two panes |
One live dashboard with CPU/MEM bars and sparklines |
A docker logs -f window per service |
One merged, color-tagged, filterable log stream |
Scrolling walls of docker inspect JSON |
Seven labelled, navigable detail tabs |
| A shell loop to restart a group | Multi-select and one keypress |
Remembering prune flags per resource |
Guided prune with a confirmation step |
Reach for it when you want to:
- See container status, ports, CPU, memory, and Docker host health at a glance.
- Jump from a container list into details, logs, environment, resource history, or a shell.
- Follow logs from one or many containers with stable color labels and filtering.
- Start, stop, restart, kill, pause, and remove containers without leaving the keyboard.
- Manage images, volumes, and networks alongside containers in the same interface.
- Keep a single lightweight binary that works great in terminal-first and SSH workflows.
Features
π₯οΈ Live container dashboard
- Container list ordered running-first, then by name β active workloads stay on top.
- Live status strip: running / paused / stopped / created counts, plus last-refresh age.
- Inline CPU % and MEM % bars per container, color-graded green β amber β red.
- Host memory and load overview (Linux).
- Persistent CPU/MEM sparklines cached to disk, so short restarts don't erase context.
- Container uptime, restart-count, and health-check status.
- Responsive columns β NAME/STATUS on narrow terminals; IMAGE, CPU, MEM, PORTS, ID, and I/O added as the window widens.
- Adjustable refresh interval, manual refresh, and sort cycling (name β state β CPU β memory β image).
π Logs built for real work
- Per-container Logs tab in the detail view.
- Centralized logs across selected containers, or all running containers when nothing is selected.
- Stable per-container color tags so interleaved streams stay readable.
- Severity coloring out of the box (ERROR / WARN / INFO / DEBUG) plus configurable highlight patterns.
- Timestamp-aware ordering, text/regex filtering, and follow mode that pauses when you scroll up.
- Copy a line (
y) or export the whole buffer to a file (E).
π Deep container inspection
Seven tabs per container β no more piping docker inspect through jq:
- Info β identity, runtime, resource limits, ports, mounts, networks, and compose labels.
- Resources β CPU/memory history graphs.
- Environment β environment variables.
- Logs β the focused per-container log view.
- Terminal β an embedded shell session, in-app.
- Diff β filesystem changes on the container's writable layer.
- Processes β running processes inside the container (
docker top).
β‘ Operational controls
- Start, stop, restart, kill, and pause/unpause β one container or a multi-selected group.
- Remove containers, or run
docker system prunewith a confirmation step. - Open an external
docker exec -itsession, or use the embedded terminal tab. - Command palette (
:) for fuzzy access to any action by name.
π¦ Full Docker inventory
- Images β list, pull, remove, and prune dangling images.
- Volumes β list, remove, prune orphaned volumes, filter, and multi-select.
- Networks β list, remove, filter, and multi-select.
- Events β live stream of Docker daemon events (container, image, network, and volume activity).
π Notifications & π¨ ergonomics
- Persistent notification center (
N) for every action result and connection event. - CPU/memory threshold alerts.
- Ten built-in themes, switchable at runtime (
t). - Keyboard-first navigation with mouse support; responsive layout for any terminal size.
- JSON config for refresh interval, alert thresholds, theme, and stable log colors.
Screenshots
Centralized logs β merge, color-tag, filter, and follow many containers at once

Detail view β seven tabs of everything docker inspect knows

Installation
One-line installers (recommended)
See Install in one line above. The scripts detect your OS and
architecture, download the matching release archive, and drop the binary onto your PATH
(~/.local/bin on Linux/macOS, %LOCALAPPDATA%\docker-tui\bin on Windows).
Pre-built binaries
Download an archive for your platform from GitHub Releases
(Linux, macOS, and Windows for amd64 and arm64), extract it, and place the docker-tui
binary somewhere on your PATH.
Go install
go install github.com/Akib558/docker-tui@latest
Build from source
git clone https://github.com/Akib558/docker-tui.git
cd docker-tui
make build
./docker-tui
Install the locally built binary into your Go bin directory:
make install
Requirements
- Docker daemon running and reachable through the local socket or
DOCKER_HOST. - Terminal with 256-color support.
- Go 1.25 or newer when building from source.
Host memory and load metrics are Linux-specific. Core Docker workflows work on all supported platforms whenever Docker is reachable.
Quick start
docker-tui
- Move through containers with
j/kor arrow keys. - Press
enterto inspect the selected container. - Use
tabto move through detail tabs. - Press
Lfrom the list to open centralized logs. - Press
/to filter containers or logs. - Press
s,R, ordto start/stop, restart, or remove containers. - Press
:to open the command palette, or?for the full keyboard reference. - Press
qto quit.
Key bindings
Common
| Key | Action |
|---|---|
ctrl+c |
Quit immediately |
q |
Quit from list or detail; return from other views |
esc |
Back, cancel, or exit the current mode |
? |
Show full keyboard reference |
: |
Open command palette |
Container list
| Key | Action |
|---|---|
j / k, arrows |
Move selection |
g / home |
Jump to first container |
G / end |
Jump to last container |
enter / l |
Open container details |
space |
Toggle container selection |
a |
Select or deselect all visible containers |
/ |
Filter by name, image, or state |
C |
Clear filter |
c |
Toggle compose grouping |
S |
Cycle sort mode (name β state β CPU β memory β image) |
s |
Start or stop selected container(s) |
R |
Restart selected container(s) |
P |
Pause or unpause selected container(s) |
K |
Kill selected container(s) |
X |
Run docker system prune after confirmation |
d |
Remove selected container(s) after confirmation |
e |
Open external docker exec -it shell |
L |
Open centralized logs |
i |
Open images view |
v |
Open volumes view |
n |
Open networks view |
N |
Open notification center |
D |
Open Docker events stream |
+ / - |
Increase or decrease refresh interval |
r |
Force refresh |
t |
Open theme picker |
Detail view
| Key | Action |
|---|---|
tab / right |
Next tab |
shift+tab / left |
Previous tab |
1β7 |
Jump to Info / Resources / Environment / Logs / Terminal / Diff / Processes |
f |
Fetch filesystem changes (Diff tab) |
p |
Fetch process list (Processes tab) |
j / k, arrows |
Scroll content |
pgup / pgdn |
Page through content |
home / end |
Jump to top or bottom; end resumes follow mode |
l |
Toggle live log streaming (Logs tab) |
enter |
Open log detail modal (Logs tab) |
space |
Toggle log line selection (Logs tab) |
V |
Select log line range (Logs tab) |
E |
Export log buffer to file (Logs tab) |
i / enter |
Attach and focus embedded shell (Terminal tab) |
x |
Connect embedded shell without focus (Terminal tab) |
ctrl+\ |
Detach embedded shell |
s / R / P / K |
Start-stop / restart / pause / kill container |
d |
Remove container after confirmation |
e |
Open external docker exec -it shell |
esc / ctrl+] |
Release terminal focus, or return to the container list |
Centralized logs
| Key | Action |
|---|---|
j / k, arrows |
Scroll log window |
pgup / pgdn |
Page through logs |
home / end |
Jump to oldest or newest; end resumes follow mode |
enter |
Open log detail modal |
space |
Toggle log line selection |
V |
Select log line range |
y |
Copy selected log line to clipboard |
E |
Export full log buffer to file |
/ |
Filter by container name or log message |
r |
Toggle regex mode (while filtering) |
ctrl+u |
Clear active log filter |
esc |
Exit filter mode or return to the list |
Log detail modal
Opened from centralized logs or the container Logs tab with enter. On wide terminals the modal splits into a line list (left) and message body (right); on narrow terminals it collapses to a single pane.
| Key | Action |
|---|---|
tab / shift+tab |
Toggle pane focus (split layout); cycle selected lines (single pane) |
h / β Β· l / β |
Focus left or right pane (split layout) |
j / k, arrows |
Change selected line (left focus) or scroll body one line (right focus / single pane) |
space / b |
Page down / up in the body (right focus or single pane) |
ctrl+d / ctrl+u |
Half-page down / up in the body (right focus) |
g / G |
First / last line (left focus) or top / bottom of body (right focus) |
pgup / pgdn |
Scroll the message body |
y / Y |
Copy current line / copy all selected lines |
esc / q / enter |
Close modal |
Images
| Key | Action |
|---|---|
j / k, arrows |
Move selection |
p |
Pull image by reference |
P |
Prune dangling images after confirmation |
d |
Remove selected image |
r |
Refresh image list |
esc / q |
Return to the container list |
Volumes
| Key | Action |
|---|---|
j / k, arrows |
Move selection |
space |
Toggle volume selection |
a |
Select or deselect all volumes |
d |
Remove selected volume(s) after confirmation |
p |
Prune all orphaned volumes after confirmation |
/ |
Filter by name or driver |
ctrl+u |
Clear filter |
r |
Refresh volume list |
esc / q |
Return to the container list |
Networks
| Key | Action |
|---|---|
j / k, arrows |
Move selection |
space |
Toggle network selection |
a |
Select or deselect all networks |
d |
Remove selected network(s) after confirmation |
/ |
Filter by name |
ctrl+u |
Clear filter |
r |
Refresh network list |
esc / q |
Return to the container list |
Notification center
| Key | Action |
|---|---|
j / k, arrows |
Navigate notifications |
g / G |
Jump to oldest / newest |
c |
Clear all notifications |
esc / q |
Return to the container list |
Events
| Key | Action |
|---|---|
j / k |
Navigate events |
c |
Clear the event log |
? |
Show full keyboard reference |
esc / q |
Return to the container list |
Configuration
Config file: ~/.config/docker-tui/config.json
{
"theme": "dark-green",
"refresh_seconds": 3,
"alert_cpu": 80.0,
"alert_mem": 80.0,
"container_colors": {
"api": "#00E676",
"worker": "#7AA2F7"
}
}
| Field | Default | Description |
|---|---|---|
theme |
"dark-green" |
Active color theme |
refresh_seconds |
3 |
List refresh interval, clamped between 1 and 30 seconds |
alert_cpu |
80.0 |
CPU alert threshold as a percentage |
alert_mem |
80.0 |
Memory alert threshold as a percentage |
container_colors |
{} |
Stable color overrides by exact container ID, exact name, or ID prefix |
Runtime history cache: ~/.cache/docker-tui/history.json
Themes
dark-green, dracula, nord, gruvbox, tokyo-night,
catppuccin-mocha, catppuccin-latte, rose-pine, ayu-dark, monokai
Switch themes inside the app with t, select with j / k, then press enter.
Development
make build # build ./docker-tui
make run # run from source
make test # run unit tests
make lint # run golangci-lint
make coverage # write coverage.out and coverage.html
Project layout:
config/ Theme definitions and JSON config persistence
docker/ Docker SDK wrapper: containers, images, volumes, networks, events, logs, stats, host metrics
ui/ Bubble Tea model, commands, views, rendering core, themes, dialogs, and helpers
scripts/ Cross-platform install scripts
The CI pipeline runs go vet, race-enabled tests, cross-platform builds, and golangci-lint.
Contributing
Contributions are welcome. Keep pull requests focused, include tests for new behavior, and run the local checks before submitting. See CONTRIBUTING.md.
Security
Please do not open public issues for vulnerabilities. Follow SECURITY.md for responsible disclosure.
License
Licensed under the MIT License. Built with Bubble Tea and Lip Gloss.
Not affiliated with Docker, Inc.
Documentation
ΒΆ
There is no documentation for this package.
Directories
ΒΆ
| Path | Synopsis |
|---|---|
|
Package config loads user preferences and theme definitions for docker-tui.
|
Package config loads user preferences and theme definitions for docker-tui. |
|
Package docker provides a thin client wrapper around the Docker Engine API.
|
Package docker provides a thin client wrapper around the Docker Engine API. |
|
Package ui implements the Bubble Tea terminal UI for docker-tui.
|
Package ui implements the Bubble Tea terminal UI for docker-tui. |