SkillAgentSearch skills...

Oxker

A simple tui to view & control docker containers

Install / Use

/learn @mrjackwills/Oxker
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align='center'> <img src='./.github/logo.svg' width='100px' /> <br> <h1 align='center'>oxker</h1> <div align='center'>A simple tui to view & control docker containers</div> </p> <p align='center'> Built in <a href='https://www.rust-lang.org/' target='_blank' rel='noopener noreferrer'>Rust</a>, making heavy use of <a href='https://github.com/tui-rs-revival/ratatui' target='_blank' rel='noopener noreferrer'>ratatui</a> & <a href='https://github.com/fussybeaver/bollard' target='_blank' rel='noopener noreferrer'>Bollard</a> </p> <p align='center'> <!-- ffmpeg -i input.mp4 -vf "scale='min(1000,iw)':-1:flags=lanczos,fps=2" -vcodec libwebp -lossless 0 -compression_level 4 -q:v 85 -loop 0 demo_01.webp --> <a href='https://raw.githubusercontent.com/mrjackwills/oxker/main/.github/demo_01.webp' target='_blank' rel='noopener noreferrer'> <img src='./.github/demo_01.webp' width='100%' alt='An animated demo of oxker in operation'/> </a> <sub> <!-- TODO update this --> <a href="https://raw.githubusercontent.com/mrjackwills/oxker/main/.github/screenshot_01.png" target='_blank' rel='noopener noreferrer'> link to alternative screenshot </a> </sub> </p>

Download & install

Cargo

Published on <a href='https://www.crates.io/crates/oxker' target='_blank' rel='noopener noreferrer'>crates.io</a>, so if you have cargo installed, simply run

cargo install oxker

Docker

Published on <a href='https://ghcr.io/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'>ghcr.io</a> and <a href='https://hub.docker.com/r/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'>Docker Hub</a>, with images built for linux/amd64, linux/arm64, and linux/arm/v6

via ghcr.io

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker

via Docker Hub

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker

Nix

Using nix flakes, oxker can be ran directly with

nix run nixpkgs#oxker

Without flakes, you can build a shell that contains oxker using

nix-shell -p oxker

AUR

oxker can be installed from the AUR with using an AUR helper:

paru -S oxker

Homebrew

oxker can be installed on macOS using Homebrew:

brew install oxker

Pre-Built

See the <a href='https://github.com/mrjackwills/oxker/releases/latest' target='_blank' rel='noopener noreferrer'>pre-built binaries</a>

or, download & install (x86_64 one liner)

wget https://www.github.com/mrjackwills/oxker/releases/latest/download/oxker_linux_x86_64.tar.gz &&
tar xzvf oxker_linux_x86_64.tar.gz oxker &&
install -Dm 755 oxker -t "${HOME}/.local/bin" &&
rm oxker_linux_x86_64.tar.gz oxker

or, for automatic platform selection, download, and installation (to $HOME/.local/bin)

One should always verify <a href='https://github.com/mrjackwills/oxker/blob/main/install.sh' target='_blank' rel='noopener noreferrer'>script content</a> before running in a shell

curl https://raw.githubusercontent.com/mrjackwills/oxker/main/install.sh | bash

Run

oxker

In application controls, these, amongst many other settings, can be customized with the config file | button| result| |--|--| | ( tab ) or ( shift+tab ) | Change panel, clicking on a panel also changes the selected panel.| | ( ↑ ↓ ) or ( j k ) or ( Home End )| Scroll line in selected panel - mouse wheel will also scroll.| | ( ← → ) | Scroll horizontally across text.| | ( ctrl ) | Increase scroll speed, used in conjunction with scroll keys.| | ( enter )| Run selected docker command.| | ( 1-9 ) | Sort containers by heading, clicking on headings also sorts the selected column. | | ( 0 ) | Stop sorting.| | ( F1 ) or ( / ) | Enter filter mode. | | ( # ) | Enter log search mode. | | ( - ) or (=) | Reduce or increase the height of the logs panel.| | ( \ ) | Toggle the visibility of the logs panel.| | ( e ) | Exec into the selected container - not available on Windows.| | ( i ) | Enter container inspect mode. | | ( f ) | Force clear the screen & redraw the gui.| | ( h ) | Toggle help menu.| | ( m ) | Toggle mouse capture - if disabled, text on screen can be selected.| | ( q ) | Quit.| | ( s ) | Save logs to $HOME/[container_name]_[timestamp].log, or the directory set by --save-dir.| | ( esc ) | Close dialog.|

Available command line arguments

| argument|result| |--|--| |-d [number > 0]| Set the minimum update interval for docker information in milliseconds. Defaults to 1000 (1 second).| |-r| Show raw logs. By default, removes ANSI formatting (conflicts with -c).| |-c| Attempt to color the logs (conflicts with -r).| |-t| Remove timestamps from each log entry.| |-s| If running via Docker, will display the oxker container.| |-g| No TUI, essentially a debugging mode with limited functionality, for now.| |--config-file [string]| Location of a config.toml/config.json/config.jsonc. By default will check the users local config directory.| |--host [string]| Connect to Docker with a custom hostname. Defaults to /var/run/docker.sock. Will use $DOCKER_HOST environment variable if set.| |--no-stderr| Do not include stderr output in logs.| |--save-dir [string]| Save exported logs into a custom directory. Defaults to $HOME.| |--timezone [string]| Display the Docker logs timestamps in a given timezone. Defaults to Etc/UTC.| |--use-cli| Use the Docker application when exec-ing into a container, instead of the Docker API.|

Config File

A config file enables the user to persist settings, create a custom keymap, set the color scheme used by the application, and more. <br> <br> Examples of the config file, alsong with explanations of each value, can be found in the example_config directory. oxker supports .toml,.json, and .jsonc file formats. <br> <br> If no config file is found, a config.toml file will be created in an oxker directory in the user's local config directory, as found by the directories crate. <br> <br> Command line arguments will take priority over values from the config file. <br> <br> If running an oxker container, the default config location will be / rather than the automatically detected platform-specific local config directory, and can be mounted as follows;

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro -v /some_location/config.toml:/config.toml:ro ghcr.io/mrjackwills/oxker

Build step

x86_64

cargo build --release

Raspberry pi

requires docker & <a href='https://github.com/cross-rs/cross' target='_blank' rel='noopener noreferrer'>cross-rs</a>

64bit pi (pi 4, pi zero w 2)

cross build --target aarch64-unknown-linux-gnu --release

32bit pi (pi zero w)

Tested, and fully working on pi zero w, running Raspberry Pi OS 32 bit, the initial logs parsing can take an extended period of time if thousands of lines long, suggest running with a -d argument of 5000

cross build --target arm-unknown-linux-musleabihf --release

If no memory information available, try appending either /boot/cmdline.txt or /boot/firmware/cmdline.txt with

cgroup_enable=cpuset cgroup_enable=memory

see <a href='https://forums.raspberrypi.com/viewtopic.php?t=203128' target='_blank' rel='noopener noreferrer'>https://forums.raspberrypi.com/viewtopic.php?t=203128</a> and <a href='https://github.com/docker/for-linux/issues/1112' target='_blank' rel='noopener noreferrer'>https://github.com/docker/for-linux/issues/1112</a>

Untested on other platforms

Tests

~~As of yet untested, needs work~~

The work has been done, so far the tests don't effect any running containers, but this may change in the future.

cargo test

Run some example docker images

using docker/docker-compose.yml;

docker compose -f ./docker/docker-compose.yml up -d

or individually

docker run --name redis -d redis:alpine3.21
docker run --name postgres -e POSTGRES_PASSWORD=never_use_this_password_in_production -d postgres:alpine3.21
docker run -d --hostname my-rabbit --name rabbitmq rabbitmq:3
View on GitHub
GitHub Stars1.6k
CategoryDevelopment
Updated4h ago
Forks47

Languages

Rust

Security Score

100/100

Audited on Apr 3, 2026

No findings