https://github.com/jesseduffield/lazydocker Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Customer Stories + White papers, Ebooks, Webinars + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. {{ message }} jesseduffield / lazydocker Public * * Notifications * Fork 977 * Star 27.6k The lazier way to manage everything docker License MIT license 27.6k stars 977 forks Star Notifications * Code * Issues 97 * Pull requests 17 * Discussions * Actions * Projects 1 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights jesseduffield/lazydocker This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 10 branches 47 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/j] Use Git or checkout with SVN using the web URL. [gh repo clone jessed] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit README-bot Updated README.md ... 15bc01b May 21, 2023 Updated README.md 15bc01b Git stats * 757 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .circleci remove dead code February 22, 2022 18:10 .devcontainer add dev-container November 15, 2022 19:40 .github Update CI jobs: Remove Check Cheatsheet from ci job October 10, 2022 18:43 docs regenerate cheatsheets March 6, 2023 02:12 hooks Added Docker automated build hook and readme badges for Docker July 2, 2019 14:06 pkg Allow to render container stats and configs both in json and yaml (... May 21, 2023 14:06 scripts Check if cheatsheets are up to date on CI October 10, 2022 17:43 test update demo docker compose project November 15, 2022 19:40 vendor Allow to render container stats and configs both in json and yaml (... May 21, 2023 14:06 .dockerignore Git commit reference mechanism changed July 1, 2019 15:37 .gitignore Add networks panel March 6, 2023 01:25 .golangci.yml use github actions instead of circle ci May 9, 2022 21:24 .goreleaser.yml Replace github with tap in brews in goreleaser config March 24, 2021 22:00 CODE-OF-CONDUCT.md repurpose lazygit code May 12, 2019 10:32 CONTRIBUTING.md go mod tidy in docs March 23, 2022 18:46 Dockerfile use alpine that supports go 1.18 May 10, 2022 21:23 LICENSE repurpose lazygit code May 12, 2019 10:32 README.md Updated README.md May 21, 2023 04:07 coverage.txt Removed some lazygit code July 6, 2019 22:27 docker-compose.yml Fix image reference July 25, 2019 10:20 go.mod Allow to render container stats and configs both in json and yaml (... May 21, 2023 14:06 go.sum Allow to render container stats and configs both in json and yaml (... May 21, 2023 14:06 main.go appease linter May 10, 2022 20:59 test.sh use github actions instead of circle ci May 9, 2022 21:24 View code [ ] Sponsors Elevator Pitch Requirements Installation Homebrew Scoop (Windows) Chocolatey (Windows) asdf-vm Setup (Once) For Install / Upgrade Binary Release (Linux/OSX/Windows) Go Arch Linux AUR Docker Usage Cool features Contributing Donate Social FAQ How do I edit my config? How do I get text to wrap in my main panel? How do you select text? Why can't I see my container's logs? Why isn't my docker-compose environment being used? Alternatives README.md [59972109-8] 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 Maintainence 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. [intabul][piot][rgwood][oliverg][pawanja][bdach][davidkl][naoey] [jryom][carsten][ceuk][akospwc][Xetera][HoldenL][barbado][nartc] [matejci][lucatum][zach-fu][davdrom][Kowalsk][nichola][topher2] [PhotonQ][GitSqua][ava1ar][pedropo][minidfx][JoeKlem][Colonel] [mutewin][tobi][benbfor][jakewar][tgpholl][jisantu][zabil][bitprop] [tayleig][Novakov][mthugge][portoth][farzadm][nekhaev][reivili] [andreas][RohanM][BSteffa][ameddin][jordan-][smangel][George-] [Hacksor][BenGH28] 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. * Requirements * Installation * Usage * Keybindings * Cool Features * Contributing * Video Tutorial * Config Docs * Twitch Stream * FAQ Requirements * Docker >= 1.13 (API >= 1.25) * Docker-Compose >= 1.23.2 (optional) Installation Homebrew Normally lazydocker formula can be found in the Homebrew core but we suggest you to tap our formula to get frequently updated one. It works with Linux, too. Tap: brew install jesseduffield/lazydocker/lazydocker Core: brew install lazydocker Scoop (Windows) You can install lazydocker using scoop: scoop install lazydocker Chocolatey (Windows) You can install lazydocker using Chocolatey: choco install lazydocker asdf-vm You can install asdf-lazydocker plugin using asdf-vm: Setup (Once) asdf plugin add lazydocker https://github.com/comdotlinux/asdf-lazydocker.git For Install / Upgrade asdf list all lazydocker asdf install lazydocker 0.12 asdf global lazydocker 0.12 Binary Release (Linux/OSX/Windows) You can manually download a binary release from the release page. Automated install/update, don't forget to always verify what you're piping into bash: curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash The script installs downloaded binary to $HOME/.local/bin directory by default, but it can be changed by setting DIR environment variable. Go Required Go Version >= 1.16 go install github.com/jesseduffield/lazydocker@latest Required Go version >= 1.8, <= 1.17 go get github.com/jesseduffield/lazydocker Arch Linux AUR You can install lazydocker using the AUR by running: yay -S lazydocker Docker Docker Pulls Docker Stars Docker Automated 1. Click if you have an ARM device + If you have a ARM 32 bit v6 architecture docker build -t lazyteam/lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm32v6/golang \ --build-arg GOARCH=arm \ --build-arg GOARM=6 \ https://github.com/jesseduffield/lazydocker.git + If you have a ARM 32 bit v7 architecture docker build -t lazyteam/lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm32v7/golang \ --build-arg GOARCH=arm \ --build-arg GOARM=7 \ https://github.com/jesseduffield/lazydocker.git + If you have a ARM 64 bit v8 architecture docker build -t lazyteam/lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm64v8/golang \ --build-arg GOARCH=arm64 \ https://github.com/jesseduffield/lazydocker.git 2. Run the container docker run --rm -it -v \ /var/run/docker.sock:/var/run/docker.sock \ -v /yourpath:/.config/jesseduffield/lazydocker \ lazyteam/lazydocker + Don't forget to change /yourpath to an actual path you created to store lazydocker's config + You can also use this docker-compose.yml + You might want to create an alias, for example: echo "alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /yourpath/config:/.config/jesseduffield/lazydocker lazyteam/lazydocker'" >> ~/.zshrc For development, you can build the image using: git clone https://github.com/jesseduffield/lazydocker.git cd lazydocker docker build -t lazyteam/lazydocker \ --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ --build-arg VCS_REF=`git rev-parse --short HEAD` \ --build-arg VERSION=`git describe --abbrev=0 --tag` \ . If you encounter a compatibility issue with Docker bundled binary, try rebuilding the image with the build argument --build-arg DOCKER_VERSION="v$(docker -v | cut -d" " -f3 | rev | cut -c 2- | rev) " so that the bundled docker binary matches your host docker binary version. Usage Call lazydocker in your terminal. I personally use this a lot so I've made an alias for it like so: echo "alias lzd='lazydocker'" >> ~/.zshrc (you can substitute .zshrc for whatever rc file you're using) * Basic video tutorial here. * List of keybindings here. Cool features everything is one keypress away (or one click away! Mouse support FTW): * viewing the state of your docker or docker-compose container environment at a glance * viewing logs for a container/service * viewing ascii graphs of your containers' metrics so that you can not only feel but also look like a developer * customising those graphs to measure nearly any metric you want * attaching to a container/service * restarting/removing/rebuilding containers/services * viewing the ancestor layers of a given image * pruning containers, images, or volumes that are hogging up disk space Contributing There is still a lot of work to go! Please check out the contributing guide. For contributor discussion about things not better discussed here in the repo, join the discord channel [discord] Donate If you would like to support the development of lazydocker, consider sponsoring me (github is matching all donations dollar-for-dollar for 12 months) Social If you want to see what I (Jesse) am up to in terms of development, follow me on twitter or watch me program on twitch FAQ How do I edit my config? By opening lazydocker, clicking on the 'project' panel in the top left, and pressing 'o' (or 'e' if your editor is vim). See Config Docs How do I get text to wrap in my main panel? In the future I want to make this the default, but for now there are some CPU issues that arise with wrapping. If you want to enable wrapping, use gui.wrapMainPanel: true How do you select text? Because we support mouse events, you will need to hold option while dragging the mouse to indicate you're trying to select text rather than click on something. Alternatively you can disable mouse events via the gui.ignoreMouseEvents config value. Mac Users: See Issue #190 for other options. Why can't I see my container's logs? By default we only show logs from the last hour, so that we're not putting too much strain on the machine. This may be why you can't see logs when you first start lazydocker. This can be overwritten in the config's commandTemplates If you are running lazydocker in Docker container, it is a know bug, that you can't see logs or CPU usage. Why isn't my docker-compose environment being used? By default Compose V1 (docker-compose with the hyphen) is used as the docker-compose command. You will need to make sure you have the docker-compose command available for lazydocker to be able to use. If you use Compose V2 (docker compose without the hyphen), alternatively, you can change the docker-compose command used via the commandTemplates.dockerCompose config value. Alternatives * docui - Skanehira beat me to the punch on making a docker terminal UI, so definitely check out that repo as well! I think the two repos can live in harmony though: lazydocker is more about managing existing containers/services, and docui is more about creating and configuring them. * Portainer - Portainer tries to solve the same problem but it's accessed via your browser rather than your terminal. It also supports docker swarm. * See Awesome Docker list for similar tools to work with Docker. About The lazier way to manage everything docker Resources Readme License MIT license Code of conduct Code of conduct Stars 27.6k stars Watchers 232 watching Forks 977 forks Report repository Releases 35 v0.20.0 Latest Nov 12, 2022 + 34 releases Sponsor this project * * https://donorbox.org/lazygit Learn more about GitHub Sponsors Packages 0 No packages published Used by 4 * @BetaLixT * @BetaLixT * @FrankFang * @nuknal Contributors 59 * @jesseduffield * @dawidd6 * @mjarkk * @qdm12 * @gusandrioli * @lpessoa * @cmoog * @pvande * @jan-krueger * @immanuelfodor * @mcintyre94 + 48 contributors Languages * Go 98.2% * Shell 1.1% * Dockerfile 0.7% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.