{"id":13586982,"url":"https://github.com/mrjackwills/oxker","last_synced_at":"2025-05-16T04:00:18.250Z","repository":{"id":40442272,"uuid":"485200694","full_name":"mrjackwills/oxker","owner":"mrjackwills","description":"A simple tui to view \u0026 control docker containers ","archived":false,"fork":false,"pushed_at":"2025-04-18T13:12:44.000Z","size":6514,"stargazers_count":884,"open_issues_count":11,"forks_count":28,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-19T01:31:48.028Z","etag":null,"topics":["async","docker","rust","terminal","tokio","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrjackwills.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-25T02:44:00.000Z","updated_at":"2025-04-18T14:44:59.000Z","dependencies_parsed_at":"2024-01-05T14:30:46.877Z","dependency_job_id":"e28ab2e5-894b-4df0-abce-64827dd3ac8f","html_url":"https://github.com/mrjackwills/oxker","commit_stats":{"total_commits":411,"total_committers":5,"mean_commits":82.2,"dds":0.009732360097323589,"last_synced_commit":"46fa47b896bba6f084ef2a18e1db03f4f178e0e1"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjackwills%2Foxker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjackwills%2Foxker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjackwills%2Foxker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjackwills%2Foxker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrjackwills","download_url":"https://codeload.github.com/mrjackwills/oxker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464890,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","docker","rust","terminal","tokio","tui"],"created_at":"2024-08-01T15:05:56.916Z","updated_at":"2025-05-16T04:00:17.635Z","avatar_url":"https://github.com/mrjackwills.png","language":"Rust","funding_links":[],"categories":["Rust","Applications","置顶","User Interfaces","Container Operations","\u003ca name=\"vm\"\u003e\u003c/a\u003eContainerization and virtualization","💻 Apps","Container Tools","Table of Contents"],"sub_categories":["Utilities","1、AI应用生态","Terminal","User Interface","👨‍💻 System Administration"],"readme":"\u003cp align=\"center\"\u003e\n\t\u003cimg src='./.github/logo.svg' width='100px' /\u003e\n\t\u003cbr\u003e\n\t\u003ch1 align=\"center\"\u003eoxker\u003c/h1\u003e\n\t\u003cdiv align=\"center\"\u003eA simple tui to view \u0026 control docker containers\u003c/div\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\tBuilt in \u003ca href='https://www.rust-lang.org/' target='_blank' rel='noopener noreferrer'\u003eRust\u003c/a\u003e, making heavy use of \u003ca href='https://github.com/tui-rs-revival/ratatui' target='_blank' rel='noopener noreferrer'\u003eratatui\u003c/a\u003e \u0026 \u003ca href='https://github.com/fussybeaver/bollard' target='_blank' rel='noopener noreferrer'\u003eBollard\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://raw.githubusercontent.com/mrjackwills/oxker/main/.github/screenshot_01.png\" target='_blank' rel='noopener noreferrer'\u003e\n\t\t\u003cimg src='./.github/screenshot_01.png' width='100%'/\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n- [Download \u0026 install](#download--install)\n- [Run](#run)\n- [Build step](#build-step)\n- [Tests](#tests)\n\n## Download \u0026 install\n\n### Cargo\nPublished on \u003ca href='https://www.crates.io/crates/oxker' target='_blank' rel='noopener noreferrer'\u003ecrates.io\u003c/a\u003e, so if you have cargo installed, simply run\n\n\n```shell\ncargo install oxker\n```\n\n### Docker\n\nPublished on \u003ca href='https://ghcr.io/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'\u003eghcr.io\u003c/a\u003e and  \u003ca href='https://hub.docker.com/r/mrjackwills/oxker' target='_blank' rel='noopener noreferrer'\u003eDocker Hub\u003c/a\u003e,\nwith images built for `linux/amd64`, `linux/arm64`, and `linux/arm/v6`\n\n\n**via ghcr.io**\n\n```shell\ndocker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker\n```\n\n**via Docker Hub**\n```shell\ndocker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker\n```\n\n### Nix\nUsing nix flakes, oxker can be ran directly with\n\n```shell\nnix run nixpkgs#oxker\n```\n\nWithout flakes, you can build a shell that contains oxker using\n\n```shell\nnix-shell -p oxker\n```\n\n### AUR\n\noxker can be installed from the [AUR](https://aur.archlinux.org/packages/oxker) with using an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers):\n\n```shell\nparu -S oxker\n```\n\n### Homebrew\n\noxker can be installed on macOS using [Homebrew](https://formulae.brew.sh/formula/oxker):\n\n```shell\nbrew install oxker\n```\n\n### Pre-Built\nSee the \u003ca href=\"https://github.com/mrjackwills/oxker/releases/latest\" target='_blank' rel='noopener noreferrer'\u003epre-built binaries\u003c/a\u003e\n\nor, download \u0026 install (x86_64 one liner)\n\n```shell\nwget https://www.github.com/mrjackwills/oxker/releases/latest/download/oxker_linux_x86_64.tar.gz \u0026\u0026\ntar xzvf oxker_linux_x86_64.tar.gz oxker \u0026\u0026\ninstall -Dm 755 oxker -t \"${HOME}/.local/bin\" \u0026\u0026\nrm oxker_linux_x86_64.tar.gz oxker\n```\n\nor, for automatic platform selection, download, and installation (to `$HOME/.local/bin`)\n\n*One should always verify \u003ca href='https://github.com/mrjackwills/oxker/blob/main/install.sh' target='_blank' rel='noopener noreferrer'\u003escript content\u003c/a\u003e before running in a shell*\n\n```shell\ncurl https://raw.githubusercontent.com/mrjackwills/oxker/main/install.sh | bash\n```\n\n## Run\n\n```shell\noxker\n```\nIn application controls, these, amongst many other settings, can be customized with the [config file](#Config-File)\n| button| result|\n|--|--|\n| ```( tab )``` or ```( shift+tab )``` | Change panel, clicking on a panel also changes the selected panel.|\n| ```( ↑ ↓ )``` or ```( j k )``` or ```( PgUp PgDown )``` or ```( Home End )```| Change selected line in selected panel, mouse scroll also changes selected line.|\n| ```( enter )```| Run selected docker command.|\n| ```( 1-9 )``` | Sort containers by heading, clicking on headings also sorts the selected column. |\n| ```( 0 )``` | Stop sorting.|\n| ```( F1 )``` or ```( / )``` | Enter filter mode. |\n| ```( e )``` | Exec into the selected container - not available on Windows.|\n| ```( h )``` | Toggle help menu.|\n| ```( m )``` | Toggle mouse capture - if disabled, text on screen can be selected.|\n| ```( q )``` | Quit.|\n| ```( s )``` | Save logs to `$HOME/[container_name]_[timestamp].log`, or the directory set by `--save-dir`.|\n| ```( esc )``` | Close dialog.|\n\nAvailable command line arguments\n\n| argument|result|\n|--|--|\n|```-d [number \u003e 0]```| Set the minimum update interval for docker information in milliseconds. Defaults to 1000 (1 second).|\n|```-r```| Show raw logs. By default, removes ANSI formatting (conflicts with `-c`).|\n|```-c```| Attempt to color the logs (conflicts with `-r`).|\n|```-t```| Remove timestamps from each log entry.|\n|```-s```| If running via Docker, will display the oxker container.|\n|```-g```| No TUI, essentially a debugging mode with limited functionality, for now.|\n|```--config-file [string]```| Location of a `config.toml`/`config.json`/`config.jsonc`. By default will check the users local config directory.|\n|```--host [string]```| Connect to Docker with a custom hostname. Defaults to `/var/run/docker.sock`. Will use `$DOCKER_HOST` environment variable if set.|\n|```--no-stderr```| Do not include stderr output in logs.|\n|```--save-dir [string]```| Save exported logs into a custom directory. Defaults to `$HOME`.|\n|```--timezone [string]```| Display the Docker logs timestamps in a given [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Defaults to `Etc/UTC`.|\n|```--use-cli```| Use the Docker application when exec-ing into a container, instead of the Docker API.|\n\n### Config File\n\n\nA config file enables the user to persist settings, create a custom keymap, set the color scheme used by the application, and more.\n\u003cbr\u003e\n\u003cbr\u003e\nExamples of the config file, alsong with explanations of each value, can be found in the [example_config](https://github.com/mrjackwills/oxker/tree/main/example_config) directory. `oxker` supports `.toml`,`.json`, and `.jsonc` file formats. \n\u003cbr\u003e\n\u003cbr\u003e\nIf 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.\n\u003cbr\u003e\n\u003cbr\u003e\nIf 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;\n\n```shell\ndocker 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\n```\n\n## Build step\n\n### x86_64\n\n```shell\ncargo build --release\n```\n\n### Raspberry pi\n\nrequires docker \u0026 \u003ca href='https://github.com/cross-rs/cross' target='_blank' rel='noopener noreferrer'\u003ecross-rs\u003c/a\u003e\n\n#### 64bit pi (pi 4, pi zero w 2)\n\n```shell\ncross build --target aarch64-unknown-linux-gnu --release\n```\n\n#### 32bit pi (pi zero w)\n\nTested, 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\n\n```shell\ncross build --target arm-unknown-linux-musleabihf --release\n```\n\nIf no memory information available, try appending either ```/boot/cmdline.txt``` or ```/boot/firmware/cmdline.txt``` with\n\n```cgroup_enable=cpuset cgroup_enable=memory```\n\nsee \u003ca href=\"https://forums.raspberrypi.com/viewtopic.php?t=203128\" target='_blank' rel='noopener noreferrer'\u003ehttps://forums.raspberrypi.com/viewtopic.php?t=203128\u003c/a\u003e and \u003ca href=\"https://github.com/docker/for-linux/issues/1112\" target='_blank' rel='noopener noreferrer'\u003ehttps://github.com/docker/for-linux/issues/1112\u003c/a\u003e \n\n\n### Untested on other platforms\n\n\n## Tests\n\n~~As of yet untested, needs work~~\n\nThe work has been done, so far the tests don't effect any running containers, but this may change in the future.\n\n```shell\ncargo test\n```\n\nRun some example docker images\n\nusing docker/docker-compose.yml;\n\n```shell\ndocker compose -f ./docker/docker-compose.yml up -d\n```\n\nor individually\n\n```shell\ndocker run --name redis -d redis:alpine3.21\n```\n\n```shell\ndocker run --name postgres -e POSTGRES_PASSWORD=never_use_this_password_in_production -d postgres:alpine3.21\n```\n\n```shell\ndocker run -d --hostname my-rabbit --name rabbitmq rabbitmq:3\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrjackwills%2Foxker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrjackwills%2Foxker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrjackwills%2Foxker/lists"}