Sick of managing docker objects? This tool is for you...
Tags: docker, programming, devops, go
Published: 2024-07-17 16:52:19

Consider this scenario, you are working on a project with your team and you use docker for containerization for easy collaboration, great. You are focused, working at peak efficiency, and are in THE ZONE. Now, you realize you have stop the current container (for whatever reason), but it is not that straightforward...you first do `docker ps` and DRAG YOUR MOUSE across the screen to select and copy the ID of the container, and then you do `docker container stop {ID}` to stop the container. And then when you think you have accomplished your goal you realize you copied the wrong ID and stopped the wrong container. 

There is a decent chance you've previously had this kind of experience, at least once. And if you are like me, you do not want to spin up a whole browser (psst..electron) and drag your mouse across the screen to manage your docker objects inefficiently (i.e. docker desktop). 

My point is `docker cli`, though great, is annoying to use repeatedly. And god forbid if you do not use docker enough, you drop everything and check docker docs on how to delete a container (I'm guilty of this), this takes you out of your workflow and introduces more distraction. There has to be a better way to do this. That's when I decided to write this TUI in Golang and it's named `goManageDocker` (get it ?🤭)

TLDR: 
gmd is a TUI tool that lets you manage your docker objects quickly and efficiently using sensible keybindings. It has VIM keybinds as well (for all you VIM nerds). 

I know what you are thinking, "This is so cool, just give me the repo link already!!". [This is it](https://github.com/ajayd-san/gomanagedocker)

This post aims to give a brief tour of the tool. 

## Navigation

As I mentioned before this tool focuses on efficiency and speed ( and nothing can be faster than VIM, ofc 🙄), so you have VIM keybinds at your disposal for MAX SPEED! 

![navigation gif](https://vhs.charm.sh/vhs-5WPQZz9rDmsaIFrPGg4iMJ.gif)

## Easy object management: 

With this tool, you can easily delete, prune, start, and stop with a single keystroke. 

I'll demonstrate the container delete function: 

![object management gif](https://vhs.charm.sh/vhs-5AiqPICz6G0C424rLwJM2J.gif)

You can also, press `D` to force delete (this would not show the prompt). 

## Cleanest way to exec into a container:

Instead of typing two different commands to exec, this is a cooler way to exec:

Just press `x` on the container you want!!

![exec gif](https://vhs.charm.sh/vhs-5QIXja1o0wuePtBcftj6J1.gif)

You can also exec directly from images (this starts a container and then execs into it).

## Blazing fast fuzzy search: 

I know this isn't rust 🦀, but regardless this is a BLAZING FAST way to search for an object. Just press `/` and search away!

![Search gif](https://vhs.charm.sh/vhs-4wxJumfD5iWSb2AOwYKJPv.gif)

## Let gmd scout for you

If you like performing `docker scout quickview`, `gmd` has your back. Just press `s` on an image and you'll see a neatly formatted table.  

![scout gif](https://vhs.charm.sh/vhs-4mPHRmhDcWoOecJVmZdIEN.gif)

Isn't this cool!? 

And this marks the end of my post. There are a lot of things that I haven't shown because I want to keep this brief. But, if this interests you, you can check out the project at [here](https://github.com/ajayd-san/gomanagedocker). There is pretty detailed readme, so you'll find everything over there (including config options). 

I'm considering adding more features to this project in the future. If you have any suggestions, be sure to open a new issue and contributions to existing issues are welcome!

Feel free to post your queries in comments. 

Thanks for reading so far! 

You have a great day ahead 😸!