jesseduffield/lazydocker

GitHub: jesseduffield/lazydocker

一个基于终端的 Docker 和 Docker Compose 管理工具,用单窗口和快捷键解决容器运维的繁琐操作。

Stars: 50162 | Forks: 1589

Special thanks to:

Warp
Warp, the intelligent terminal
Available for MacOS and Linux
Visit warp.dev to learn more.


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



Subble
Click here to learn more


一个用 Go 语言编写,基于 [gocui](https://github.com/jroimartin/gocui 'gocui') 库的简单终端 UI,同时支持 docker 和 docker-compose。 ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5fc2b61b05162729.svg) [![Go Report Card](https://goreportcard.com/badge/github.com/jesseduffield/lazydocker)](https://goreportcard.com/report/github.com/jesseduffield/lazydocker) [![GolangCI](https://golangci.com/badges/github.com/jesseduffield/lazydocker.svg)](https://golangci.com) [![GoDoc](https://godoc.org/github.com/jesseduffield/lazydocker?status.svg)](http://godoc.org/github.com/jesseduffield/lazydocker) ![GitHub repo size](https://img.shields.io/github/repo-size/jesseduffield/lazydocker) [![GitHub Releases](https://img.shields.io/github/downloads/jesseduffield/lazydocker/total)](https://github.com/jesseduffield/lazydocker/releases) [![GitHub tag](https://img.shields.io/github/tag/jesseduffield/lazydocker.svg)](https://github.com/jesseduffield/lazydocker/releases/latest) [![homebrew](https://img.shields.io/homebrew/v/lazydocker)](https://github.com/Homebrew/homebrew-core/blob/master/Formula/lazydocker.rb) ![Gif](/docs/resources/demo3.gif) [演示](https://youtu.be/NICqQPxwJWw) ## 电梯演讲 小小的吐槽来了:有些东西不工作了?也许某个服务挂了。`docker-compose ps`。没错,就是那个还有 bug 的微服务。没问题,我只要重启它:`docker-compose restart`。好,再试一次。噢等等,问题还在。嗯。`docker-compose ps`。好吧,看来那个服务刚启动就立刻停止了。如果我一直在读日志流我大概早就知道了,但里面混杂了太多其他服务的干扰信息。我可以用 `docker compose logs --follow myservice` 只获取那一个服务的日志,但每次服务挂掉这个命令也会结束,所以我每次重启服务都得重新运行那个命令。或者我也可以运行 `docker-compose up myservice`,在那个终端窗口里,如果服务挂了我可以直接再 `up` 一次,但现在即使我不再关心它的日志,也有一个服务霸占着一个终端窗口。我想我想收回终端控制权的时候可以做 `ctrl+P,Q`,但是……等等,因为某些原因那个不起作用。我应该用 ctrl+C 代替吗?我不记得那是关闭前台进程还是杀掉实际的服务了。 真让人头大! 记住 docker 命令很难。记住别名稍微容易一点。跨多个终端窗口跟踪你的容器几乎是不可能的。如果你能在一个终端窗口里获得你需要的所有信息,并且每个常用命令都只需按一个键(还能添加自定义命令),那会怎么样?Lazydocker 的目标就是让这个梦想成为现实。 - [需求](https://github.com/jesseduffield/lazydocker#requirements) - [安装](https://github.com/jesseduffield/lazydocker#installation) - [使用](https://github.com/jesseduffield/lazydocker#usage) - [按键绑定](/docs/keybindings) - [酷炫特性](https://github.com/jesseduffield/lazydocker#cool-features) - [贡献](https://github.com/jesseduffield/lazydocker#contributing) - [视频教程](https://youtu.be/NICqQPxwJWw) - [配置文档](/docs/Config.md) - [Twitch 直播](https://www.twitch.tv/jesseduffield) - [常见问题](https://github.com/jesseduffield/lazydocker#faq) ## 需求 - Docker >= **29.0.0** (API >= **1.24**) - Docker-Compose >= **1.23.2** (可选) ## 安装 ### Homebrew 通常 `lazydocker` formula 可以在 Homebrew core 中找到,但我们建议你 tap 我们的 formula 以获取经常更新的版本。它也适用于 Linux。 **Tap**: ``` brew install jesseduffield/lazydocker/lazydocker ``` **Core**: ``` brew install lazydocker ``` ### Scoop (Windows) 你可以使用 [scoop](https://scoop.sh/) 安装 `lazydocker`: ``` scoop install lazydocker ``` ### Chocolatey (Windows) 你可以使用 [Chocolatey](https://chocolatey.org/) 安装 `lazydocker`: ``` choco install lazydocker ``` ### asdf-vm 你可以使用 [asdf-vm](https://asdf-vm.com/) 安装 [asdf-lazydocker plugin](https://github.com/comdotlinux/asdf-lazydocker): #### 设置 (一次) ``` asdf plugin add lazydocker https://github.com/comdotlinux/asdf-lazydocker.git ``` #### 安装 / 升级 ``` asdf list all lazydocker asdf install lazydocker latest asdf global lazydocker latest ``` ### 二进制发布版 你可以从 [发布页面](https://github.com/jesseduffield/lazydocker/releases) 手动下载二进制发布版。 自动化安装/更新,别忘了总是验证你通过管道传给 bash 的内容: ``` curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash ``` 该脚本默认将下载的二进制文件安装到 `$HOME/.local/bin` 目录,但可以通过设置 `DIR` 环境变量来更改。 ### Go 所需的 Go 版本 >= **1.19** ``` go install github.com/jesseduffield/lazydocker@latest ``` 所需的 Go 版本 >= **1.8**, <= **1.17** ``` go get github.com/jesseduffield/lazydocker ``` ### Arch Linux AUR 你可以通过运行以下命令使用 [AUR](https://aur.archlinux.org/packages/lazydocker) 安装 lazydocker: ``` yay -S lazydocker ``` ### Docker [![Docker Pulls](https://img.shields.io/docker/pulls/lazyteam/lazydocker.svg)](https://hub.docker.com/r/lazyteam/lazydocker) [![Docker Stars](https://img.shields.io/docker/stars/lazyteam/lazydocker.svg)](https://hub.docker.com/r/lazyteam/lazydocker) [![Docker Automated](https://img.shields.io/docker/cloud/automated/lazyteam/lazydocker.svg)](https://hub.docker.com/r/lazyteam/lazydocker) 1.
如果你有 ARM 设备请点击

- 如果你是 ARM 32 位 v6 架构 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 - 如果你是 ARM 32 位 v7 架构 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 - 如果你是 ARM 64 位 v8 架构 docker build -t lazyteam/lazydocker \ --build-arg BASE_IMAGE_BUILDER=arm64v8/golang \ --build-arg GOARCH=arm64 \ https://github.com/jesseduffield/lazydocker.git

2. 运行容器 docker run --rm -it -v \ /var/run/docker.sock:/var/run/docker.sock \ -v /yourpath:/.config/jesseduffield/lazydocker \ lazyteam/lazydocker - 别忘了将 `/yourpath` 更改为你创建的实际路径,用于存储 lazydocker 的配置 - 你也可以使用这个 [docker-compose.yml](https://github.com/jesseduffield/lazydocker/blob/master/docker-compose.yml) - 你可能想要创建一个别名,例如: 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 对于开发,你可以使用以下命令构建镜像: ``` 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` \ . ``` 如果你遇到 Docker 捆绑二进制文件的兼容性问题,请尝试使用构建参数 `--build-arg DOCKER_VERSION="v$(docker -v | cut -d" " -f3 | rev | cut -c 2- | rev)"` 重新构建镜像,以便捆绑的 docker 二进制文件与主机上的 docker 二进制文件版本匹配。 ### 手动 你需要 [安装 Go](https://golang.org/doc/install) ``` git clone https://github.com/jesseduffield/lazydocker.git cd lazydocker go install ``` 你也可以使用 `go run main.go` 来一次性编译并运行(双关语绝对是有意的) ## 使用 在你的终端中调用 `lazydocker`。我个人经常使用它,所以我为它做了一个别名,像这样: ``` echo "alias lzd='lazydocker'" >> ~/.zshrc ``` (你可以将 .zshrc 替换为你正在使用的任何 rc 文件) - 基础视频教程 [在这里](https://youtu.be/NICqQPxwJWw)。 - 按键绑定列表 [在这里](/docs/keybindings)。 ## 酷炫特性 一切只需按一个键(或点一下鼠标!鼠标支持万岁): - 一目了然地查看你的 docker 或 docker-compose 容器环境的状态 - 查看容器/服务的日志 - 查看容器指标的 ASCII 图表,让你不仅感觉像个开发者,看起来也像个开发者 - 自定义这些图表以测量几乎任何你想要的指标 - 附加到容器/服务 - 重启/删除/重建容器/服务 - 查看给定镜像的祖先层 - 清理占用磁盘空间的容器、镜像或卷 ## 常见问题 ### 如何编辑我的配置? 通过打开 lazydocker,点击左上角的 'project' 面板,然后按 'o'(如果你的编辑器是 vim 则按 'e')。参见 [配置文档](/docs/Config.md) ### 如何让文本在我的主面板中自动换行? 将来我想让这成为默认设置,但目前换行会带来一些 CPU 问题。如果你想启用换行,请使用 `gui.wrapMainPanel: true` ### 你如何选择文本? 因为我们支持鼠标事件,你需要按住 option 键同时拖动鼠标,以表明你是在尝试选择文本而不是点击某个东西。或者你可以通过 `gui.ignoreMouseEvents` 配置值禁用鼠标事件。 Mac 用户:其他选项请参见 [Issue #190](https://github.com/jesseduffield/lazydocker/issues/190)。 ### 为什么我看不到容器的日志? 默认情况下,我们只显示最近一小时的日志,这样我们就不会给机器带来太大的负担。这可能就是你刚开始启动 lazydocker 时看不到日志的原因。这可以在配置的 `commandTemplates` 中被覆盖 如果你在 Docker 容器中运行 lazydocker,这是一个已知的 bug,你无法看到日志或 CPU 使用率。 ## 替代品 - [docui](https://github.com/skanehira/docui) - Skanehira 抢先一步制作了 docker 终端 UI,所以一定要去看看那个 repo!不过我认为这两个 repo 可以和谐共存:lazydocker 更多是关于管理现有的容器/服务,而 docui 更多是关于创建和配置它们。 - [Portainer](https://github.com/portainer/portainer) - Portainer 试图解决同样的问题,但它是通过浏览器而不是终端访问的。它也支持 docker swarm。 - 请参阅 [Awesome Docker 列表](https://github.com/veggiemonk/awesome-docker/blob/master/README.md#terminal) 以获取类似的 Docker 工具。
标签:Awesome, Docker, Docker-Compose, EVTX分析, gocui, Go语言, Mutation, TUI, 可视化, 安全防御评估, 容器管理, 容器编排, 开源, 懒人工具, 日志审计, 程序破解, 系统管理, 终端UI, 运维工具