Built in Rust, making heavy use of ratatui & Bollard
Published on crates.io, so if you have cargo installed, simply run
cargo install oxker
Published on ghcr.io and Docker Hub,
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
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
oxker can be installed from the AUR with using an AUR helper:
paru -S oxker
oxker can be installed on macOS using Homebrew:
brew install oxker
See the pre-built binaries
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 script content before running in a shell
curl https://raw.githubusercontent.com/mrjackwills/oxker/main/install.sh | bash
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 ( PgUp PgDown ) or ( Home End ) |
Change selected line in selected panel, mouse scroll also changes selected line. |
( 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. |
( e ) |
Exec into the selected container - not available on Windows. |
( 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. |
A config file enables the user to persist settings, create a custom keymap, set the color scheme used by the application, and more.
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.
If not config file is found, oxker
will create a config.toml
in the user's local config directory. Command line arguments will take priority over values from the config file.
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
cargo build --release
requires docker & cross-rs
cross build --target aarch64-unknown-linux-gnu --release
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 https://forums.raspberrypi.com/viewtopic.php?t=203128 and docker/for-linux#1112
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