MCPcopy Index your code
hub / github.com/ajayd-san/gomanagedocker

github.com/ajayd-san/gomanagedocker @v1.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.5 ↗ · + Follow
607 symbols 1,599 edges 58 files 177 documented · 29%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

goManageDocker

Do Docker commands slip your mind because you don't use Docker often enough? Sick of googling commands for everyday tasks? GoManageDocker is designed to NUKE this annoyance.

Introducing goManageDocker (get it?)! This blazing fast TUI, made using Go and BubbleTea, will make managing your Docker objects a breeze.

Contents

  1. Install Instructions
  2. Quick Start
  3. Features
  4. Keybinds
  5. Configuration
  6. Roadmap
  7. Found an issue?
  8. Contributing

Install Instructions

Unix

You can install the latest release of goManageDocker on UNIX systems with a simple bash script:

bash -c "$(curl -sLo- https://raw.githubusercontent.com/ajayd-san/gomanagedocker/main/install.sh)"

This is the recommended way to install on Linux(amd64 only) and MacOS(both intel and arm) systems. Start the program with gmd.

Windows

Building from source is currently the only way to install this on Windows. See next section.

Build from source

Just build like any other Go binary, this is currently the only way to make goManageDocker work on Windows and arm64 chipsets running Linux:

go install github.com/ajayd-san/gomanagedocker@main

Start the program with gomanagedocker (Rename it to gmd if you'd like, the binary will be installed at your $GOPATH).

Docker

Want to try this without installing a binary? I gotchu!

Docker:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock kakshipth/gomanagedocker:latest

Podman:

First start the podman service:

systemctl --user start podman.socket

And then:

docker run -it -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock kakshipth/gomanagedocker:latest p

Alias it to something quicker (unless you like typing a lot 🙄)

Quick Start

docker

To connect to the docker service:

gmd 

podman

First start the podman service:

systemctl --user start podman.socket

(replace start with enable if you'd like to start it during every boot)

To connect to the podman service:

gmd p 

(Issuing the subcommand p connects to the podman socket)

[!NOTE] The command to invoke the TUI changes depending on the install method, if you installed from source you would be typing gomanagedocker instead of gmd (unless you aliased it to gmd).

Now, goManageDocker 😏!!

[!NOTE] goManageDocker runs best on terminals that support ANSI 256 colors and designed to run while the terminal is maximized.

Features

New in v1.5:

  1. goManageDocker now has first class support for Podman!! (who doesn't like more secure containers 😉). You can now manage podman images, containers, volumes and even pods from the TUI!

    podmanRun

Previous release features:

  1. Easy navigation with vim keybinds and arrow keys. intro

  2. Exec into selected container with A SINGLE KEYSTROKE: x...How cool is that? exec

  3. Delete objects using d (You can force delete with D, you won't have to answer a prompt this way) delete

  4. Prune objects using p prune

  5. start/stop/pause/restart containers with s, t and r startstop

  6. Filter objects with / search

  7. Perfrom docker scout with s scout

  8. Run an image directly from the image tab by pressing r. runImage

  9. You can directly copy the ID to your clipboard of an object by pressing c. copyId

  10. You can now run and exec into an image directly from the images tab with x runAndExec

  11. Global notification system notificationSystem

  12. Bulk operation mode: select multiple objects before performing an operations (saves so much time!!) bulkDelete

  13. Build image from Dockerfile using b build

  14. View live logs from a container using L runImage

  15. Run image now takes arguments for port, name and env vars. runImage

Keybinds

Navigation

Operation Key
Back Esc
Quit Ctrl + c / q
Next Tab / l / Tab
Prev Tab / h / Shift + Tab
Next Item / j
Prev Item / k
Next Page [
Prev Page ]
Enter bulk mode Space

Image

Operation Key
Run r
Build Image b
Scout s
Prune p
Delete d
Delete (Force) D
Copy ID c
Run and Exec x

Container

Operation Key
Toggle List All a
Toggle Start/Stop s
Toggle Pause t
Restart r
Delete d
Delete (Force) D
Exec x
Prune p
Copy ID c
Show Logs L

Volume

Operation Key
Delete d
Prune p
Copy Volume Name c

Pods

Operation Key
Create New Pod n
Toggle Start/Stop s
Toggle Pause t
Restart r
Delete d
Delete (Force) D
Prune p
Copy ID c
Show Logs L

Configuration

I've added support for config files from V1.2.

Place gomanagedocker/gomanagedocker.yaml in your XDG config folder and configure to your heart's content!

Default Configuration:

config:
  Polling-Time: 500
  Tab-Order:
    Docker: [images, containers, volumes]
    Podman: [images, containers, volumes, pods]
  Notification-Timeout: 2000

  • Polling-Time: Set how frequently the program calls the docker API (measured in milliseconds, default: 500ms)
  • Tab-Order: Define the order of tabs displayed for Docker and Podman. Each key specifies the tab order for its respective environment. Valid tabs include images, containers, volumes, and pods (for Podman only). You can omit tabs you don’t wish to display.
  • Notification-Timeout: Set how long a status message sticks around for (measured in milliseconds, default: 2000ms)

Roadmap

  • Add a networks tab
  • ~~Make compatible with podman 👀~~

Found an issue ?

Feel free to open a new issue, I will take a look ASAP.

Contributing

Please refer CONTRIBUTING.md for more info.

Thanks!!

image

Extension points exported contracts — how you extend this code

Item (Interface)
Item is an item that appears in the list. [5 implementers]
tui/components/list/list.go
SimpleInfoBoxer (Interface)
(no doc) [4 implementers]
tui/info.go
Service (Interface)
both DockerClient and PodmanClient satisfy this interface [2 implementers]
service/service.go
PodmanAPI (Interface)
(no doc) [2 implementers]
podman/podmanApi.go
Operation (FuncType)
(no doc)
tui/operations.go
DefaultItem (Interface)
DefaultItem describes an items designed to work with DefaultDelegate. [4 implementers]
tui/components/list/defaultitem.go
SizeInfoBoxer (Interface)
(no doc) [4 implementers]
tui/info.go
ItemDelegate (Interface)
ItemDelegate encapsulates the general functionality for all list items. The benefit to separating this logic from the it [1 …
tui/components/list/list.go

Core symbols most depended-on inside this repo

Render
called by 110
tui/components/list/list.go
GetId
called by 34
tui/components/list/defaultitem.go
NewNotification
called by 31
tui/util.go
addEntry
called by 28
tui/info.go
runBackground
called by 23
tui/mainModel.go
Update
called by 22
tui/components/list/list.go
Width
called by 21
tui/components/list/list.go
isCurrentTabInBulkMode
called by 20
tui/mainModel.go

Shape

Method 361
Function 159
Struct 65
TypeAlias 12
Interface 8
FuncType 2

Languages

Go100%

Modules by API surface

tui/components/list/list.go94 symbols
tui/types.go46 symbols
service/podmancmd/test_util.go31 symbols
tui/keys.go30 symbols
podman/podmanApi.go29 symbols
tui/mainModel.go26 symbols
service/dockercmd/test_utils.go23 symbols
tui/operations.go22 symbols
service/types/types.go21 symbols
service/service.go21 symbols
tui/components/list/defaultitem.go16 symbols
tui/dialogs.go14 symbols

For agents

$ claude mcp add gomanagedocker \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact