MCPcopy Index your code
hub / github.com/jesseduffield/lazydocker

github.com/jesseduffield/lazydocker @v0.25.2

repository ↗ · DeepWiki ↗ · release v0.25.2 ↗ · + Follow
632 symbols 1,975 edges 87 files 212 documented · 34% 11 cross-repo links updated 2mo agov0.25.2 · 2026-04-19★ 51,616195 open issues
README

Special thanks to:

<img src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-02.png?raw=true" width="400" alt="Warp">

Warp, the intelligent terminal

Available for MacOS and Linux

<sup>Visit warp.dev to learn more.</sup>


<img src="https://github.com/jesseduffield/lazydocker/raw/v0.25.2/assets/tuple.png" width="400" alt="Tuple">

Tuple, the premier screen sharing app for developers on macOS and Windows.


<img src="https://github.com/jesseduffield/lazydocker/raw/v0.25.2/assets/subble-job-ad.jpg" width="400" alt="Subble">

Click here to learn more


A simple terminal UI for both docker and docker-compose, written in Go with the gocui library.

CI Go Report Card GolangCI GoDoc GitHub repo size GitHub Releases GitHub tag homebrew

Gif

Demo

Sponsors

Maintenance of this project is made possible by all the contributors and sponsors. If you'd like to sponsor this project and have your avatar or company logo appear below click here. 💙

Mark LussierDean HerbertPeter BjorklundReilly WoodOliver GüntherPawan DhananjayBartłomiej DachDavid KarlssonCarsten GehlingCEUKAkos PutzXeteraHolden LucasChau TranmatejciktheAverageDev (Luca Tumedei)Ivan ZaitsevNicholas CloudLightQuantumGabriel SaillardAliaksandr StelmachonakBurgy BenjaminJoe KlemmerTobias LütkeBen BeaumontHollyJames SantucciJeff ForcierMaciej T. NowakFarzad MajidfayyazYuryAndreas KurthBraden SteffaniakJordan GillardSebastianGeorge SpanosFrantisek StankoAndy SlezakMartin KockIllarion KoperskiJesse AlamaCodacyBrettJan HeijmansKevin Nowaldsem pruijsOmar Luq Ethan LiBrian MacAskillMaxinbrJan ZenknerVictor AremuIgor RamazanovElliott Maguiren8n - Workflow Automationkaleb allmonJosh ThomasJJFrederick MorlockDarren CraineMaximilian LangenfeldNurzhanDavis BulsGrec MarcsainuMarc Güell SegarraChris OlsenVladimir PopovNeil LambertShaun GarwoodDavid Heinemeier HanssonWayan jimmy

Elevator Pitch

Minor rant incoming: Something's not working? Maybe a service is down. docker-compose ps. Yep, it's that microservice that's still buggy. No issue, I'll just restart it: docker-compose restart. Okay now let's try again. Oh wait the issue is still there. Hmm. docker-compose ps. Right so the service must have just stopped immediately after starting. I probably would have known that if I was reading the log stream, but there is a lot of clutter in there from other services. I could get the logs for just that one service with docker compose logs --follow myservice but that dies everytime the service dies so I'd need to run that command every time I restart the service. I could alternatively run docker-compose up myservice and in that terminal window if the service is down I could just up it again, but now I've got one service hogging a terminal window even after I no longer care about its logs. I guess when I want to reclaim the terminal realestate I can do ctrl+P,Q, but... wait, that's not working for some reason. Should I use ctrl+C instead? I can't remember if that closes the foreground process or kills the actual service.

What a headache!

Memorising docker commands is hard. Memorising aliases is slightly less hard. Keeping track of your containers across multiple terminal windows is near impossible. What if you had all the information you needed in one terminal window with every common command living one keypress away (and the ability to add custom commands as well). Lazydocker's goal is to make that dream a reality.

Extension points exported contracts — how you extend this code

CmdKiller (Interface)
we only need these two methods from our OSCommand struct, for killing commands [2 implementers]
pkg/commands/ssh/ssh.go
IGui (Interface)
(no doc) [1 implementers]
pkg/gui/panels/side_list_panel.go
TaskFunc (FuncType)
(no doc)
pkg/tasks/tasks.go
LimitedDockerCommand (Interface)
LimitedDockerCommand is a stripped-down DockerCommand with just the methods the container/service/image might need [1 …
pkg/commands/docker.go
ISideListPanel (Interface)
(no doc)
pkg/gui/panels/side_list_panel.go

Core symbols most depended-on inside this repo

Error
called by 69
pkg/utils/utils.go
createErrorPanel
called by 44
pkg/gui/confirmation_panel.go
GetSelectedItem
called by 35
pkg/gui/panels/side_list_panel.go
WithPadding
called by 34
pkg/utils/utils.go
ColoredString
called by 28
pkg/utils/utils.go
wrappedHandler
called by 26
pkg/gui/keybindings.go
WithWaitingStatus
called by 25
pkg/gui/app_status_manager.go
NewCommandObject
called by 24
pkg/commands/docker.go

Shape

Method 396
Function 160
Struct 69
Interface 4
TypeAlias 2
FuncType 1

Languages

Go100%

Modules by API surface

pkg/gui/panels/side_list_panel.go41 symbols
pkg/gui/view_helpers.go36 symbols
pkg/utils/utils.go31 symbols
pkg/gui/gui.go31 symbols
pkg/commands/os.go30 symbols
pkg/gui/containers_panel.go27 symbols
pkg/commands/docker.go25 symbols
pkg/gui/services_panel.go24 symbols
pkg/config/app_config.go21 symbols
pkg/commands/ssh/ssh.go14 symbols
pkg/commands/os_test.go13 symbols
pkg/commands/container.go13 symbols

Dependencies from manifests, versioned

github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/OpenPeeDeeP/xdgv0.2.1-0.20190312153 · 1×
github.com/boz/go-throttlev0.0.0-2016092205463 · 1×
github.com/cloudfoundry/jibber_jabberv0.0.0-2015112018325 · 1×
github.com/containerd/errdefsv1.0.0 · 1×
github.com/containerd/errdefs/pkgv0.3.0 · 1×
github.com/containerd/logv0.1.0 · 1×
github.com/distribution/referencev0.6.0 · 1×
github.com/docker/cliv27.1.1+incompatible · 1×
github.com/docker/dockerv28.5.2+incompatible · 1×
github.com/docker/docker-credential-helpersv0.8.2 · 1×

For agents

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

⬇ download graph artifact