{"id":13578121,"url":"https://github.com/robertpsoane/ducker","last_synced_at":"2026-02-25T22:01:12.688Z","repository":{"id":244653476,"uuid":"815432717","full_name":"robertpsoane/ducker","owner":"robertpsoane","description":"A slightly quackers Docker TUI based on k9s 🦆","archived":false,"fork":false,"pushed_at":"2025-10-20T20:29:46.000Z","size":7574,"stargazers_count":754,"open_issues_count":9,"forks_count":22,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-20T22:26:17.124Z","etag":null,"topics":["developer-tools","docker","ratatui-rs"],"latest_commit_sha":null,"homepage":"https://ducker.soane.io","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/robertpsoane.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"robertpsoane","buy_me_a_coffee":"robertpsoane"}},"created_at":"2024-06-15T06:32:11.000Z","updated_at":"2025-10-20T20:27:51.000Z","dependencies_parsed_at":"2024-06-21T12:19:08.026Z","dependency_job_id":"562bbb0d-8adb-4e3e-bdab-9ad87e92ea9f","html_url":"https://github.com/robertpsoane/ducker","commit_stats":null,"previous_names":["robertpsoane/ducker"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/robertpsoane/ducker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpsoane%2Fducker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpsoane%2Fducker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpsoane%2Fducker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpsoane%2Fducker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertpsoane","download_url":"https://codeload.github.com/robertpsoane/ducker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpsoane%2Fducker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280207158,"owners_count":26290613,"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","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["developer-tools","docker","ratatui-rs"],"created_at":"2024-08-01T15:01:27.706Z","updated_at":"2026-02-25T22:01:12.673Z","avatar_url":"https://github.com/robertpsoane.png","language":"Rust","funding_links":["https://github.com/sponsors/robertpsoane","https://buymeacoffee.com/robertpsoane"],"categories":["Rust","\u003ca name=\"devops\"\u003e\u003c/a\u003eDevOps","developer-tools","💻 Apps","Table of Contents"],"sub_categories":["👨‍💻 System Administration"],"readme":"\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/robertpsoane/ducker\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/robertpsoane/ducker/master/assets/ducker.png?raw=true\" width=\"250\" height=\"250\" /\u003e\u003c/a\u003e\n\u003ch1 align=\"center\"\u003eDucker\u003c/h1\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n🐋 A terminal app for managing docker containers, inspired by \u003ca href=\"https://k9scli.io\"\u003eK9s\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e · \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e · \u003ca href=\"#configuration\"\u003eConfiguration\u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003ca href=\"https://github.com/robertpsoane/ducker\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/robertpsoane/ducker/master/assets/demo.gif?raw=true\" width=\"100%\" /\u003e\u003c/a\u003e\n\n\u003cp align=\"center\"\u003e\n🦀 Written in Rust 🦀\n\u003c/p\u003e\n\n## Installation\n\n### Cargo\n\nThere isn't currently a downloadable pre-built binary; to install you will need cargo 1.88 or higher installed:\n\n```bash\ncargo install --locked ducker\n```\n\u003e :warning: **Make sure you use --locked**: if ducker is installed without `--locked` it is susceptible to changes in upstream dependencies, which could break the build.\n\n### Arch Linux\n\nYou can install `ducker` from the [official repositories](https://archlinux.org/packages/extra/x86_64/ducker/) with using [pacman](https://wiki.archlinux.org/title/pacman).\n\n```sh\npacman -S ducker\n```\n\n### Homebrew\n\nIf you have homebrew:\n\n```sh\nbrew install ducker\n```\n\n### Nix\n\n`ducker` is packaged in [nixpkgs](https://github.com/NixOS/nixpkgs).\n\nYou can try `ducker` without installing it with:\n\n```sh\nnix-shell -p ducker\n# or with flakes enabled\nnix run nixpkgs#ducker\n```\n\nInstall `ducker` by adding it to your `configuration.nix` file:\n\n```nix\nenvironment.systemPackages = with pkgs; [\n  ducker\n];\n```\n\nMore details can be found via the [NixOS search page](https://search.nixos.org/packages?channel=unstable\u0026show=ducker\u0026query=ducker).\n\n### Unstable\n\nTo install the latest unstable version of Ducker, run the following command:\n\n```\ncargo install --git https://github.com/robertpsoane/ducker\n```\n\n## Usage\n\nDucker is comprised of a set of **pages**, each of which display specific information about and/or allow interaction with the docker containers and images on the host system.\n\nTop level **pages** can be navigated to with **commands**, input via the **prompt**.  **Pages** can be interacted with using **actions**; these are input via hotkey inputs.\n\nA legend for common global hotkey inputs is displayed at the bottom of the screen; one for contextual (eg different on each page) hotkey inputs are displayed in the top right.\n\n### Commands\n\nThe following commands are supported:\n\n| Command      | Aliases     | Description                          |\n| ------------ | ----------- | ------------------------------------ |\n| `images`     | `image`     | Open the `Images` top level page     |\n| `containers` | `container` | Open the `Containers` top level page |\n| `volumes`    | `volume`    | Open the `Volumes` top level page    |\n| `networks`   | `network`   | Open the `Networks` top level page   |\n| `help`       | `h`         | Open the `Help` page                 |\n| `quit`       | `q`         | Close the application                |\n\n\n### Actions\n\n#### Global\n\nThe following global actions are available on all pages:\n\n| Hotkey  | Action                                    |\n| ------- | ----------------------------------------- |\n| `k`/`↑` | Navigate up in a list/table               |\n| `j`/`↓` | Navigate down in a list/table             |\n| `Q`/`q` | Close the application                     |\n| `:`     | Open the command prompt                   |\n| `G`     | Navigate to the bottom of a list or table |\n| `g`     | Navigate to the top of a list or table    |\n\n#### Containers\n\nThe following actions are available on the Containers page:\n\n| Hotkey   | Action                                                                |\n| -------- | --------------------------------------------------------------------- |\n| `Ctrl+d` | Delete the currently selected container                               |\n| `a`      | Exec into the currently selected container (if container is running)* |\n| `l`      | View the logs for the currently selected container                    |\n| `r`      | Run the currently selected container                                  |\n| `s`      | Stop the currently selected container                                 |\n\n***NB**: exec currently only supports containers with bash installed.  The intention is that this will be updated to provide a user option.\n\n#### Images\n\nThe following actions are available on the Images page:\n\n| Hotkey   | Action                                |\n| -------- | ------------------------------------- |\n| `Ctrl+d` | Delete the currently selected image   |\n| `Alt+d`  | Toggle dangling images                |\n| `d`      | Describe the currently selected image |\n\n#### Volumes\n\nThe following actions are available on the Volumes page:\n\n| Hotkey   | Action                                 |\n| -------- | -------------------------------------- |\n| `Ctrl+d` | Delete the currently selected volume   |\n| `Alt+d`  | Toggle dangling volumes                |\n| `d`      | Describe the currently selected volume |\n\n#### Networks\n\nThe following actions are available on the Networks page:\n\n| Hotkey   | Action                                  |\n| -------- | --------------------------------------- |\n| `Ctrl+d` | Delete the currently selected network   |\n| `d`      | Describe the currently selected network |\n\n\u003e :warning: **Network deletion isn't entirely complete**: A failed deletion currently results in a yes/no modal telling you that it couldn't be deleted.  There is no difference between the yes and no results.  This is due to the current modal story and a quick and dirty hack to get them set up.  Once a generic modal exists this will be patched up!\n\n#### Logs\n\nThe following actions are available on the Logs page:\n\n| Hotkey | Action                        |\n| ------ | ----------------------------- |\n| `Esc`  | Return to the containers page |\n\n\n### Sorting Hotkeys\n\n\u003e **Tip:** Use `Shift` + the indicated key to sort columns.\n\u003e Pressing the same sorting key again will sort the same column in the opposite order (toggle ascending/descending).\n\u003e See the table below for each page's sort options.\n\n#### Containers\n| Hotkey    | Action          |\n| --------- | --------------- |\n| `Shift+N` | Sort by name    |\n| `Shift+I` | Sort by image   |\n| `Shift+S` | Sort by status  |\n| `Shift+C` | Sort by created |\n| `Shift+P` | Sort by ports   |\n\n#### Images\n| Hotkey    | Action          |\n| --------- | --------------- |\n| `Shift+N` | Sort by name    |\n| `Shift+C` | Sort by created |\n| `Shift+T` | Sort by tag     |\n| `Shift+S` | Sort by size    |\n\n#### Networks\n| Hotkey    | Action          |\n| --------- | --------------- |\n| `Shift+N` | Sort by name    |\n| `Shift+C` | Sort by created |\n| `Shift+S` | Sort by scope   |\n| `Shift+D` | Sort by driver  |\n\n#### Volumes\n| Hotkey    | Action             |\n| --------- | ------------------ |\n| `Shift+N` | Sort by name       |\n| `Shift+C` | Sort by created    |\n| `Shift+D` | Sort by driver     |\n| `Shift+M` | Sort by mountpoint |\n\n\n## Configuration\n\nDucker is configured via a yaml file found in the relevant config directory for host platform.  On linux this is `~/.config/ducker/config.yaml`.\n\nThe following table summarises the available config values:\n\n| Key                         | Default                       | Description                                                                                                                   |\n| --------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |\n| prompt                      | 🦆                             | The default prompt to display in the command pane                                                                             |\n| default_exec                | `/bin/bash`                   | The default prompt to display in the command pane. NB - currently uses this for all exec's; it is planned to offer a choice   |\n| docker_path                 | `unix:///var/run/docker.sock` | The location of the socket on which the docker daemon is exposed (defaults to `npipe:////./pipe/docker_engine` on windows)    |\n| check_for_update            | `true`                        | When true, checks whether there is a newer version on load.  If a newer version is found, indicates via note in bottom right. |\n| autocomplete_minimum_length | 2                             | The default minimum length before autocompletion in prompt.                                                                   |\n| theme                       | [See below]                   | The colour theme configuration                                                                                                |\n\nIf a value is unset or if the config file is unfound, Ducker will use the default values.  If a value is malformed, Ducker will fail to run.\n\nTo create a fully populated default config, run ducker with the `-e/--export-default-config` flag; this will write the default config to the default location, overwriting any existing config.\n\n### Themes\n\nBy default, ducker uses the terminal emulator's preset colours.  However, it is possible to set a custom colour theme in config.  This is set in the `theme` section of the config file.  The following table describes the theme options.  The default theme provides the colours provided in the GIF in this README.\n\n| Key                | Default   | Description                                       |\n| ------------------ | --------- | ------------------------------------------------- |\n| use_theme          | `false`   | Whether to use the theme defined in config        |\n| title              | `#96E072` | The colour used for the Ducker font in the header |\n| help               | `#EE5D43` | The colour used in the help prompts in the header |\n| background         | `#23262E` | The colour used in the background                 |\n| footer             | `#00E8C6` | The colour used for the text in the footer        |\n| success            | `#96E072` | The colour used for a successful result           |\n| error              | `#EE5D43` | The colour used for an error result               |\n| positive_highlight | `#96E072` | The colour used for highlighting in a happy state |\n| negative_highlight | `#FF00AA` | The colour used for highlighting in a sad state   |\n\n### Tmux\n\nSome characters in ducker use italics/boldface.  This doesn't work by default when running in tmux.  To fix this, add the following to your add to tmux.conf\n```\nset -g default-terminal \"tmux-256color\"\nset -as terminal-overrides ',xterm*:sitm=\\E[3m'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertpsoane%2Fducker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertpsoane%2Fducker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertpsoane%2Fducker/lists"}