{"id":13416349,"url":"https://github.com/moncho/dry","last_synced_at":"2026-03-08T11:07:17.081Z","repository":{"id":38985131,"uuid":"45923375","full_name":"moncho/dry","owner":"moncho","description":"dry - A Docker manager for the terminal @","archived":false,"fork":false,"pushed_at":"2025-05-13T19:50:18.000Z","size":32499,"stargazers_count":3104,"open_issues_count":37,"forks_count":101,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-05-13T20:59:47.515Z","etag":null,"topics":["docker","docker-cli","docker-engine","docker-swarm","golang"],"latest_commit_sha":null,"homepage":"http://moncho.github.io/dry/","language":"Go","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/moncho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":"moncho"}},"created_at":"2015-11-10T16:07:21.000Z","updated_at":"2025-05-13T20:46:55.000Z","dependencies_parsed_at":"2022-07-20T01:19:18.290Z","dependency_job_id":"ba0e5f34-b03e-49c9-b499-3a1152bcd562","html_url":"https://github.com/moncho/dry","commit_stats":{"total_commits":963,"total_committers":28,"mean_commits":"34.392857142857146","dds":0.2502596053997923,"last_synced_commit":"db0aded92a4d492c9841bc05fd274f55ff085d4a"},"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moncho%2Fdry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moncho%2Fdry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moncho%2Fdry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moncho%2Fdry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moncho","download_url":"https://codeload.github.com/moncho/dry/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254028536,"owners_count":22002275,"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":["docker","docker-cli","docker-engine","docker-swarm","golang"],"created_at":"2024-07-30T21:00:57.488Z","updated_at":"2026-03-08T11:07:17.071Z","avatar_url":"https://github.com/moncho.png","language":"Go","readme":"# dry\n\n[![MIT License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/moncho/dryblob/master/LICENSE)\n![Build Status](https://github.com/moncho/dry/actions/workflows/go.yml/badge.svg)\n![Release](https://github.com/moncho/dry/actions/workflows/release.yml/badge.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/moncho/dry)](https://goreportcard.com/report/github.com/moncho/dry)\n[![GoDoc](https://godoc.org/github.com/moncho/dry?status.svg)](https://godoc.org/github.com/moncho/dry)\n[![Github All Releases](https://img.shields.io/github/downloads/moncho/dry/total.svg)]()\n[![Release](https://img.shields.io/github/release/moncho/dry.svg?style=flat-square)](https://github.com/moncho/dry/releases/latest)\n[![dry](https://snapcraft.io/dry/badge.svg)](https://snapcraft.io/dry)\n\n**Dry** is a terminal application to manage **Docker** and **Docker Swarm**.\n\nIt shows information about Containers, Images and Networks, and, if running a **Swarm** cluster, it shows information about Nodes, Service, Stacks and the rest of **Swarm** constructs. It can be used with both local or remote **Docker** daemons.\n\nBesides showing information, it can be used to manage Docker. Most of the commands that the official **Docker CLI** provides, are available in **dry** with the same behaviour. A list of available commands and their keybindings can be found in **dry**'s help screen or in this README.\n\nLastly, it can also be used as a monitoring tool for **Docker** containers.\n\n**Dry** is installed as a single binary and does not require external libraries.\n\nThe demo below shows a **dry** session.\n\n[![asciicast](https://asciinema.org/a/35825.png)](https://asciinema.org/a/35825?autoplay=1\u0026speed=1.5)\n\n## **dry** keybinds\n\n### Global\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003e%\u003c/kbd\u003e         | filter list\n\u003ckbd\u003eF1\u003c/kbd\u003e        | sort list\n\u003ckbd\u003eF5\u003c/kbd\u003e        | refresh list\n\u003ckbd\u003eF7\u003c/kbd\u003e        | toggle showing Docker daemon information\n\u003ckbd\u003eF8\u003c/kbd\u003e        | show docker disk usage\n\u003ckbd\u003eF9\u003c/kbd\u003e        | show last 10 docker events\n\u003ckbd\u003eF10\u003c/kbd\u003e       | show docker info\n\u003ckbd\u003e1\u003c/kbd\u003e         | show container list\n\u003ckbd\u003e2\u003c/kbd\u003e         | show image list\n\u003ckbd\u003e3\u003c/kbd\u003e         | show network list\n\u003ckbd\u003e4\u003c/kbd\u003e         | show volumes list\n\u003ckbd\u003e5\u003c/kbd\u003e         | show node list (on Swarm mode)\n\u003ckbd\u003e6\u003c/kbd\u003e         | show service list (on Swarm mode)\n\u003ckbd\u003e7\u003c/kbd\u003e         | show stacks list (on Swarm mode)\n\u003ckbd\u003e8\u003c/kbd\u003e         | show compose projects list\n\u003ckbd\u003eArrowUp\u003c/kbd\u003e or \u003ckbd\u003ek\u003c/kbd\u003e | move the cursor one line up\n\u003ckbd\u003eArrowDown\u003c/kbd\u003e or \u003ckbd\u003ej\u003c/kbd\u003e | move the cursor one line down\n\u003ckbd\u003eg\u003c/kbd\u003e         | move the cursor to the top\n\u003ckbd\u003eG\u003c/kbd\u003e         | move the cursor to the bottom\n\u003ckbd\u003eq\u003c/kbd\u003e         | quit dry\n\n\n#### Container commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | show container command menu\n\u003ckbd\u003eF2\u003c/kbd\u003e        | toggle on/off showing stopped containers\n\u003ckbd\u003ei\u003c/kbd\u003e         | inspect\n\u003ckbd\u003el\u003c/kbd\u003e         | container logs\n\u003ckbd\u003ee\u003c/kbd\u003e         | remove\n\u003ckbd\u003es\u003c/kbd\u003e         | stats\n\u003ckbd\u003eCtrl+e\u003c/kbd\u003e    | remove all stopped containers\n\u003ckbd\u003eCtrl+k\u003c/kbd\u003e    | kill\n\u003ckbd\u003eCtrl+r\u003c/kbd\u003e    | start/restart\n\u003ckbd\u003eCtrl+t\u003c/kbd\u003e    | stop\n\n\n#### Image commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003ei\u003c/kbd\u003e         | history\n\u003ckbd\u003eCtrl+d\u003c/kbd\u003e    | remove dangling images\n\u003ckbd\u003eCtrl+e\u003c/kbd\u003e    | remove image\n\u003ckbd\u003eCtrl+f\u003c/kbd\u003e    | remove image (force)\n\u003ckbd\u003eCtrl+u\u003c/kbd\u003e    | remove unused images\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | inspect\n\n#### Network commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003eCtrl+e\u003c/kbd\u003e    | remove network\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | inspect\n\n#### Volume commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003eCtrl+a\u003c/kbd\u003e    | remove all volumes\n\u003ckbd\u003eCtrl+e\u003c/kbd\u003e    | remove volume\n\u003ckbd\u003eCtrl+f\u003c/kbd\u003e    | remove volume (force)\n\u003ckbd\u003eCtrl+u\u003c/kbd\u003e    | remove unused volumes\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | inspect\n\n#### Service commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003ei\u003c/kbd\u003e         | inspect service\n\u003ckbd\u003el\u003c/kbd\u003e         | service logs\n\u003ckbd\u003eCtrl+r\u003c/kbd\u003e    | remove service\n\u003ckbd\u003eCtrl+s\u003c/kbd\u003e    | scale service\n\u003ckbd\u003eCtrl+u\u003c/kbd\u003e    | update service\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | show service tasks\n\n#### Compose Projects commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | show project services\n\u003ckbd\u003el\u003c/kbd\u003e         | project logs\n\u003ckbd\u003eCtrl+t\u003c/kbd\u003e    | stop project containers\n\u003ckbd\u003eCtrl+r\u003c/kbd\u003e    | restart project containers\n\u003ckbd\u003eCtrl+e\u003c/kbd\u003e    | remove project containers\n\n#### Compose Services commands\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003eEnter\u003c/kbd\u003e     | inspect service\n\u003ckbd\u003eEsc\u003c/kbd\u003e       | back to projects\n\u003ckbd\u003el\u003c/kbd\u003e         | service logs\n\u003ckbd\u003eCtrl+s\u003c/kbd\u003e    | start service containers\n\u003ckbd\u003eCtrl+t\u003c/kbd\u003e    | stop service containers\n\u003ckbd\u003eCtrl+r\u003c/kbd\u003e    | restart service containers\n\u003ckbd\u003eCtrl+e\u003c/kbd\u003e    | remove service containers\n\n#### Moving around buffers\n\nKeybinding           | Description\n---------------------|---------------------------------------\n\u003ckbd\u003eArrowUp\u003c/kbd\u003e or \u003ckbd\u003ek\u003c/kbd\u003e | move the cursor one line up\n\u003ckbd\u003eArrowDown\u003c/kbd\u003e or \u003ckbd\u003ej\u003c/kbd\u003e | move the cursor one line down\n\u003ckbd\u003eg\u003c/kbd\u003e         | move the cursor to the beginning of the buffer\n\u003ckbd\u003eG\u003c/kbd\u003e         | move the cursor to the end of the buffer\n\u003ckbd\u003en\u003c/kbd\u003e         | after search, move forwards to the next search hit\n\u003ckbd\u003eN\u003c/kbd\u003e         | after search, move backwards to the previous search hit\n\u003ckbd\u003es\u003c/kbd\u003e         | search\n\u003ckbd\u003epg up\u003c/kbd\u003e     | move the cursor \"screen size\" lines up\n\u003ckbd\u003epg down\u003c/kbd\u003e   | move the cursor \"screen size\" lines down\n\n## Installation\n\nThe easiest way to install the latest binaries for Linux and Mac is to run this in a shell:\n\n```sh\ncurl -sSf https://moncho.github.io/dry/dryup.sh | sudo sh\nsudo chmod 755 /usr/local/bin/dry\n```\n\n### Binaries\n\nIf you dont like to **curl | sh**, binaries are provided.\n\n* **darwin** [amd64](https://github.com/moncho/dry/releases/latest/download/dry-darwin-amd64) / [arm64](https://github.com/moncho/dry/releases/latest/download/dry-darwin-arm64)\n* **freebsd** [386](https://github.com/moncho/dry/releases/latest/download/dry-freebsd-386) / [amd64](https://github.com/moncho/dry/releases/latest/download/dry-freebsd-amd64)\n* **linux** [386](https://github.com/moncho/dry/releases/latest/download/dry-linux-386) / [amd64](https://github.com/moncho/dry/releases/latest/download/dry-linux-amd64) / [arm64](https://github.com/moncho/dry/releases/latest/download/dry-linux-arm64) / [armv6](https://github.com/moncho/dry/releases/latest/download/dry-linux-armv6) / [armv7](https://github.com/moncho/dry/releases/latest/download/dry-linux-armv7)\n* **windows** [amd64](https://github.com/moncho/dry/releases/latest/download/dry-windows-amd64)\n\n#### Mac OS X / Homebrew\n\nIf you're on OS X and want to use homebrew:\n\n```\nbrew tap moncho/dry\nbrew install dry\n```\n\n#### Docker\n\n```docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -e DOCKER_HOST=$DOCKER_HOST moncho/dry```\n\n#### Arch Linux\n\n```yay -S dry-bin```\n\n### Usage\n\nOpen a console, type ```dry```. It will try to connect to:\n\n* A Docker host given as a parameter (**-H**).\n* if none given, a Docker host defined in the **$DOCKER_HOST** environment variable.\n* if not defined, to **unix:///var/run/docker.sock**.\n\nIf no connection with a Docker host succeeds, **dry** will exit.\n\n```dry -p``` launches dry with [pprof](https://golang.org/pkg/net/http/pprof/) package active.\n\n### Contributing\n\nAll contributions are welcome.\n\n* Fork the project.\n* Make changes on a topic branch.\n* Pull request.\n\n## Copyright and license\n\nCode released under the MIT license. See\n[LICENSE](https://github.com/moncho/dry/blob/master/LICENSE) for the full license text.\n\n## Credits\n\nBuilt on top of:\n\n* [Bubbletea](https://github.com/charmbracelet/bubbletea)\n* [Bubbles](https://github.com/charmbracelet/bubbles)\n* [Lipgloss](https://github.com/charmbracelet/lipgloss)\n* [Docker](https://github.com/docker/docker)\n* [Docker CLI](https://github.com/docker/cli)\n\n## Alternatives\nSee [Awesome Docker list](https://github.com/veggiemonk/awesome-docker/blob/master/README.md#terminal) for similar tools to work with Docker.\n","funding_links":["https://github.com/sponsors/moncho"],"categories":["Container Operations","Go","Misc","Terminal User Interface","golang","Uncategorized","Tools and Plugins","\u003ca name=\"vm\"\u003e\u003c/a\u003eContainerization and virtualization","容器管理与运维 (Container Operations)","Table of Contents"],"sub_categories":["User Interface","Uncategorized","Windows","终端工具 (Terminal / CLI Tools)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoncho%2Fdry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoncho%2Fdry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoncho%2Fdry/lists"}