{"id":15629579,"url":"https://github.com/pyaillet/doggy","last_synced_at":"2025-07-14T10:07:57.929Z","repository":{"id":211693672,"uuid":"729753304","full_name":"pyaillet/doggy","owner":"pyaillet","description":"Minimal TUI (Terminal User Interface) for Docker","archived":false,"fork":false,"pushed_at":"2024-05-17T14:12:06.000Z","size":41650,"stargazers_count":16,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-29T23:13:40.249Z","etag":null,"topics":["containers","docker","rust","rust-lang","terminal-based","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/pyaillet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2023-12-10T08:42:55.000Z","updated_at":"2025-04-09T10:27:56.000Z","dependencies_parsed_at":"2023-12-25T21:41:49.748Z","dependency_job_id":"a23a1c62-72ce-40d2-b50f-41a5e12924e3","html_url":"https://github.com/pyaillet/doggy","commit_stats":{"total_commits":107,"total_committers":3,"mean_commits":"35.666666666666664","dds":0.514018691588785,"last_synced_commit":"0055d2acbf046cb91682abd70bb2400a594c8a77"},"previous_names":["pyaillet/doggy"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/pyaillet/doggy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyaillet%2Fdoggy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyaillet%2Fdoggy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyaillet%2Fdoggy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyaillet%2Fdoggy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyaillet","download_url":"https://codeload.github.com/pyaillet/doggy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyaillet%2Fdoggy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265277604,"owners_count":23739423,"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":["containers","docker","rust","rust-lang","terminal-based","tui"],"created_at":"2024-10-03T10:27:40.277Z","updated_at":"2025-07-14T10:07:57.908Z","avatar_url":"https://github.com/pyaillet.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doggy\n\n![Build](https://github.com/pyaillet/doggy/actions/workflows/rust.yml/badge.svg)\n\nMinimal TUI interface for Docker\n\n## Preview\n\nCheck a preview of the TUI:\n\n![Preview of the TUI](./doc/preview.gif)\n\n## How to use?\n\n### Using the releases\n\nYou can download one of the binary from the release page\n- https://github.com/pyaillet/doggy/releases/latest\n\n### Build it on your own:\n\nYou can either install it with CRI support if you want to use it with containerd or CRI-O, or without if you only want to use it with Docker and Podman.\n\n#### Without CRI support\n\n- Install Rust (see [here](https://www.rust-lang.org/tools/install))\n- Install the tool: `cargo install --locked --git https://github.com/pyaillet/doggy`\n\n#### With CRI support\n\n- Install Rust (see [here](https://www.rust-lang.org/tools/install))\n- Install the dependencies\n  - [protoc](https://grpc.io/docs/protoc-installation/) with the feature `cri`\n- Install the tool: `cargo install --locked --git https://github.com/pyaillet/doggy --features cri`\n\n### Use brew\n\n- Install via homebrew\n\n```shell-session\nbrew tap pyaillet/homebrew-formulas\nbrew install pyaillet/formulas/doggy\n```\n\n## Usage\n\n### Docker connection\n\n#### Linux\n\nBy default `doggy` will try the following in order:\n1. Check for existence of the environment variables `DOCKER_HOST` and `DOCKER_CERT_PATH`, if both are defined it will try to connect to the address in the `DOCKER_HOST` variable and use `ca.pem`, `cert.pem` and `key.pem` in `DOCKER_CERT_PATH` to establish a secure connection to the docker daemon.\n2. Check for existence of the environment variables `DOCKER_HOST`, if only this one is defined it will try to connect to the address in the `DOCKER_HOST` variable to establish *an insecure connection* to the docker daemon.\n3. If the variables are not defined, it will search for the local socket `unix:///var/run/docker.sock`\n4. If the socket is not found, it will search for the CRI socket `unix:///var/run/containerd/containerd.sock`\n\n#### MacOS\n\nBy default `doggy` will check the existence of a socket file in the following in order:\n1. Docker socket file `unix:///var/run/docker.sock`\n2. Rancher Desktop docker socket file `unix://${HOME}/.rd/docker.sock`\n3. Podman Desktop docker socket file `unix://${HOME}/.local/share/containers/podman/machine/podman.sock`\n4. Orbstack docker socket file `unix://${HOME}/.orbstack/run/docker.sock`\n4. Containerd CRI socket `unix:///var/run/containerd/containerd.sock`\n\n#### Other\n\nIt's also possible to specify where to find the sockets with command args:\n- `--docker \u003cdocker socket path\u003e`\n- `--cri \u003ccri socket path\u003e`\n\n### Key bindings\n\n- Display help screen: `?`\n- Change view: `:` and resource name (`containers`, `images`, `networks`, `volumes`)\n- Filter resources by name: `/`\n- Container view:\n  - Show/hide stopped containers: `a`\n  - Launch `/bin/bash` in the container: `s`\n  - Launch a custom command in the container: `S`\n  - Show container logs: `l`\n- Sort by columns: `F[1234]`\n- Inspect resource: `i` \n- Delete a resource: `Ctrl+d`\n- Browse lists:\n  - Up: `↑` or `j`\n  - Down: `↓` or `k`\n- Previous view: `Esc`\n\n## What's working? (on the main branch)\n\n- [x] List containers\n- [x] Display the stopped containers\n- [x] Filter the container list\n- [x] Inspect containers\n- [x] View container logs\n- [x] Exec `/bin/bash` in a container\n- [x] Delete containers (running or stopped)\n- [x] List images\n- [x] Inspect image\n- [x] Filter the image list\n- [x] Delete images (not used by any container)\n- [x] List networks\n- [x] Inspect network\n- [x] Filter the network list\n- [x] Delete network\n- [x] List volumes\n- [x] Inspect volume\n- [x] Filter the volume list\n- [x] Delete volume\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyaillet%2Fdoggy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyaillet%2Fdoggy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyaillet%2Fdoggy/lists"}