jesseduffield/lazydocker
GitHub: jesseduffield/lazydocker
一个基于终端的 Docker 和 Docker Compose 管理工具,用单窗口和快捷键解决容器运维的繁琐操作。
Stars: 50162 | Forks: 1589
一个用 Go 语言编写,基于 [gocui](https://github.com/jroimartin/gocui 'gocui') 库的简单终端 UI,同时支持 docker 和 docker-compose。

[](https://goreportcard.com/report/github.com/jesseduffield/lazydocker)
[](https://golangci.com)
[](http://godoc.org/github.com/jesseduffield/lazydocker)

[](https://github.com/jesseduffield/lazydocker/releases)
[](https://github.com/jesseduffield/lazydocker/releases/latest)
[](https://github.com/Homebrew/homebrew-core/blob/master/Formula/lazydocker.rb)

[演示](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
[](https://hub.docker.com/r/lazyteam/lazydocker)
[](https://hub.docker.com/r/lazyteam/lazydocker)
[](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, 运维工具