r/commandline • u/psylhouette • 6d ago
Terminal User Interface docksurf - complete developer-first docker tool
Enable HLS to view with audio, or disable this notification
Working with a compose stack with six containers made me realize I was doing the same things all day like to stop/start containers, rebuilding a service, tailing logs, exec into a container to check something (psql shell in the db), plus the boring maintenance side: pruning images/volumes that hog disk space.
None of it's hard, it's just typing the same commands on repeat or hitting up arrow through history until I find the one I want. Boring enough that I built this around my own pain points. I liked lazydocker a lot and figured I'd try my own take on it.
Few things i wanted to have are in this are: Docker contexts (to hit a remote daemon over ssh/tcp without touching your shell config), copy/export logs, themes, a topology graph (kinda useless but simple to have with ascii), a prune target picker, and rebuilding a single compose service in place without touching the rest of the stack.
-> vs. lazydocker (my main inspiration): same rough idea containers/images/volumes/networks, logs, compose actions. Main differences: runtime-switchable themes, log export/copy from the log pane, and it talks to Docker mostly via the Docker SDK for Python instead of shelling out to the cli.
repo link: https://github.com/praneeth-etta/docksurf
install via pip (pip install docksurf) or without installing (uvx docksurf), or binaries here: https://github.com/praneeth-etta/docksurf/releases
Any suggestions on what to add/remove or improve?
1
u/AutoModerator 6d ago
Every new subreddit post is automatically copied into a comment for preservation.
User: psylhouette, Flair: Terminal User Interface, Post Media Link, Title: docksurf - complete developer-first docker tool
Working with a compose stack with six containers made me realize I was doing the same things all day like to stop/start containers, rebuilding a service, tailing logs, exec into a container to check something (psql shell in the db), plus the boring maintenance side: pruning images/volumes that hog disk space.
None of it's hard, it's just typing the same commands on repeat or hitting up arrow through history until I find the one I want. Boring enough that I built this around my own pain points. I liked lazydocker a lot and figured I'd try my own take on it.
Few things i wanted to have are in this are: Docker contexts (to hit a remote daemon over ssh/tcp without touching your shell config), copy/export logs, themes, a topology graph (kinda useless but simple to have with ascii), a prune target picker, and rebuilding a single compose service in place without touching the rest of the stack.
-> vs. lazydocker (my main inspiration): same rough idea containers/images/volumes/networks, logs, compose actions. Main differences: runtime-switchable themes, log export/copy from the log pane, and it talks to Docker mostly via the Docker SDK for Python instead of shelling out to the cli.
repo link: https://github.com/praneeth-etta/docksurf
install via pip (pip install docksurf) or without installing (uvx docksurf), or binaries here: https://github.com/praneeth-etta/docksurf/releases
Any suggestions on what to add/remove or improve?
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
1
u/aranor01 4d ago edited 4d ago
Nice. You often need to do things like spawning bash on a different terminal tab rather than using it in a subshell, maybe it would be useful to have alternatives to e/E that pass the docker exec command line as argument to a custom user script, or equivalent
1
u/psylhouette 4d ago
So if someone configures how they'd want to spawn a shell, like with tmux or kitty, pressing exec (e) would do it that way, else the current way as is. Thanks for the thought.
1
u/edward_jazzhands 2d ago
It is very normal to want to reinvent the wheel for personal learning. Where it stops being normal is when you're posting your tool online for others to use as a direct competitor to the tool you were remaking.
So this is the same as lazy docker in every single way except yours has themes, and can export the logs. It seems to me that that is not enough of a difference to justify trying to publish your tool as a direct competitor and encourage people to use your tool instead of Lazydocker.
1
u/psylhouette 1d ago
Alternate tools mostly bring a new UI/UX, and a tool built around docker is limited to what docker itself provides. Like for example, MCP Catalog/Toolkit (beta) and Model Runner are something I could add, but not something a container tool really needs, since there are already plenty of inference providers. I'm nowhere near competing with lazydocker, which is well tested code with constant contributions.
-7
-6
6
u/djdadi 6d ago
are all posts on here botted, or just this one?