rustydocker

On the management of containers

fast, compose‑first
Docker TUI,
written in Rust.

A modern alternative to lazydocker, for developers who live in the terminal and prefer their container orchestration swift, silent, and served in ASCII. Keyboard‑driven, vim‑flavoured, and entirely free of mouse tax.

$ curl https://raw.githubusercontent.com/kennywillbe/rustydocker/master/install.sh | bash

Figure I.  The interface, at rest.

rustydocker  ·  project: my-app 0.2.1

Four stacked sidebar sections — containers, images, volumes, networks — paired with tabbed detail views. Every column of information is reachable without lifting your hands from home row.

§ I · Features

Built for control,
tuned for speed.

A deliberate set of tools for people who ship containers for a living. No dashboards, no telemetry, no cloud — just a tight loop between you and the Docker socket.

01

Compose-first

Services are grouped by Docker Compose project, with a live dependency graph visualising depends_on relationships — unique to rustydocker.

02

Real-time logs

Streaming logs with regular‑expression search (/), per‑match highlighting, and an all‑logs view with colour‑coded container names.

03

Live statistics

CPU, memory, and network‑delta charts in KB/s, rendered directly into the terminal with tiny sparkline histories.

04

Fuzzy find & pin

Score‑based fuzzy matching across the sidebar. Bookmark favourites to the top with *, multi‑select with Space.

05

Event‑driven

The UI subscribes to the Docker event stream — container births, deaths, and image pulls refresh the interface instantly, without polling.

06

Hooks & commands

Attach shell hooks to Docker events, register custom commands in config.toml, and trigger bulk actions across any selection.

§ II · Installation

Three paths
to the prompt.

  1. I.

    Quick install

    The curl‑to‑bash ritual. Fetches the latest release binary and drops it in ~/.local/bin.

    curl https://raw.githubusercontent.com/kennywillbe/rustydocker/master/install.sh | bash
  2. II.

    From source

    For the patient and the paranoid. Requires Rust 1.75 or newer.

    cargo install --path .
  3. III.

    Arch Linux

    Available in the AUR, for those who run Arch — btw.

    yay -S rustydocker

§ III · Keybindings

Every action,
one keystroke away.

Navigation

jk
Move cursor up / down
hl
Focus sidebar / main
Tab
Next detail tab
16
Jump to tab
/
Regex search in logs
?
Help overlay
q
Quit

Container actions

u
Start
s
Stop
r
Restart
p
Pause / unpause
e
Exec into shell
a
Attach
w
Open port in browser
d
Remove (with confirm)

Compose & bulk

U
compose up -d
D
compose down
R
compose restart
Space
Multi-select
*
Pin to top
b
Bulk commands menu
x
Disk cleanup menu
S
Export logs to file

§ IV · Configuration

Drop a TOML file.
Tune it to taste.

Location.

~/.config/rustydocker/config.toml

Every value has a sensible default — the file is optional. Use it to tune timing, alert thresholds, remote Docker hosts, custom commands, and event hooks that run arbitrary shell whenever a container starts, stops, or dies.

tick_rate_ms
UI refresh cadence
sidebar_width
Columns reserved for the sidebar
docker_host
Point at a remote daemon over TCP
[[hooks]]
Shell command per Docker event
# Timing
tick_rate_ms       = 250
log_tail_lines     = "100"
sidebar_width      = 40

# Resource alerts — sidebar turns red
cpu_alert_threshold    = 80.0
memory_alert_threshold = 90.0

# Optional: remote Docker daemon
# docker_host = "tcp://192.168.1.100:2376"

# Run arbitrary shell on Docker events
[[hooks]]
event   = "container_die"
command = "notify-send '{container_name} died'"

[[custom_commands]]
name    = "Tail logs in less"
command = "docker logs {container_id} 2>&1 | less"
attach  = true