Skip to content
/ doggy Public

Minimal TUI (Terminal User Interface) for Docker

License

Notifications You must be signed in to change notification settings

pyaillet/doggy

Repository files navigation

Doggy

Build

Minimal TUI interface for Docker

Preview

Check a preview of the TUI:

Preview of the TUI

How to use?

Using the releases

You can download one of the binary from the release page

Build it on your own:

You 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.

Without CRI support

  • Install Rust (see here)
  • Install the tool: cargo install --locked --git https://github.com/pyaillet/doggy

With CRI support

  • Install Rust (see here)
  • Install the dependencies
  • Install the tool: cargo install --locked --git https://github.com/pyaillet/doggy --features cri

Use brew

  • Install via homebrew
brew tap pyaillet/homebrew-formulas
brew install pyaillet/formulas/doggy

Usage

Docker connection

Linux

By default doggy will try the following in order:

  1. 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.
  2. 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.
  3. If the variables are not defined, it will search for the local socket unix:///var/run/docker.sock
  4. If the socket is not found, it will search for the CRI socket unix:///var/run/containerd/containerd.sock

MacOS

By default doggy will check the existence of a socket file in the following in order:

  1. Docker socket file unix:///var/run/docker.sock
  2. Rancher Desktop docker socket file unix://${HOME}/.rd/docker.sock
  3. Podman Desktop docker socket file unix://${HOME}/.local/share/containers/podman/machine/podman.sock
  4. Orbstack docker socket file unix://${HOME}/.orbstack/run/docker.sock
  5. Containerd CRI socket unix:///var/run/containerd/containerd.sock

Other

It's also possible to specify where to find the sockets with command args:

  • --docker <docker socket path>
  • --cri <cri socket path>

Key bindings

  • Display help screen: ?
  • Change view: : and resource name (containers, images, networks, volumes)
  • Filter resources by name: /
  • Container view:
    • Show/hide stopped containers: a
    • Launch /bin/bash in the container: s
    • Launch a custom command in the container: S
    • Show container logs: l
  • Sort by columns: F[1234]
  • Inspect resource: i
  • Delete a resource: Ctrl+d
  • Browse lists:
    • Up: or j
    • Down: or k
  • Previous view: Esc

What's working? (on the main branch)

  • List containers
  • Display the stopped containers
  • Filter the container list
  • Inspect containers
  • View container logs
  • Exec /bin/bash in a container
  • Delete containers (running or stopped)
  • List images
  • Inspect image
  • Filter the image list
  • Delete images (not used by any container)
  • List networks
  • Inspect network
  • Filter the network list
  • Delete network
  • List volumes
  • Inspect volume
  • Filter the volume list
  • Delete volume