一个简单的终端UI,适用于docker和docker-compose,使用Go语言和gocui库编写。
赞助商
本项目的维护得益于所有贡献者和赞助商。如果您想赞助这个项目并在下方显示您的头像或公司logo,请点击这里。💙
## 梗概小吐槽来了:某些东西不工作了?也许是某个服务宕机了。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的目标就是让这个梦想成真。
要求
- Docker >= 1.13 (API >= 1.25)
- Docker-Compose >= 1.23.2 (可选)
安装
Homebrew
通常可以在Homebrew核心仓库中找到lazydocker
配方,但我们建议你使用我们的配方以获得更频繁的更新。它也适用于Linux。
使用Tap:
brew install jesseduffield/lazydocker/lazydocker
使用Core:
brew install lazydocker
Scoop (Windows)
你可以使用scoop安装lazydocker
:
scoop install lazydocker
Chocolatey (Windows)
你可以使用Chocolatey安装lazydocker
:
choco install lazydocker
asdf-vm
你可以使用asdf-vm安装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
二进制发布版(Linux/OSX/Windows)
你可以从发布页面手动下载二进制发布版。
自动安装/更新,别忘了始终验证你通过管道传输到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安装lazydocker:
yay -S lazydocker
Docker
-
如果你使用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
-
-
运行容器
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
-
你可能想创建一个别名,例如:
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二进制文件版本匹配。
使用方法
在终端中调用lazydocker
。我个人经常使用它,所以我为它创建了一个别名,如下所示:
echo "alias lzd='lazydocker'" >> ~/.zshrc
(你可以将.zshrc替换为你正在使用的任何rc文件)
酷炫功能
所有操作都只需一次按键(或一次点击!支持鼠标操作):
- 一目了然地查看docker或docker-compose容器环境的状态
- 查看容器/服务的日志
- 查看容器指标的ASCII图表,让你不仅感觉像个开发者,看起来也像个开发者
- 自定义这些图表以测量几乎任何你想要的指标
- 连接到容器/服务
- 重启/删除/重建容器/服务
- 查看给定镜像的祖先层
- 清理占用磁盘空间的容器、镜像或卷
贡献
还有很多工作要做!请查看贡献指南。 对于贡献者讨论不适合在此仓库中讨论的事项,请加入Discord频道
捐赠
如果你想支持lazydocker的开发,可以考虑赞助我(github正在匹配所有捐赠,一对一持续12个月)
社交
如果你想了解我(Jesse)在开发方面的近况,可以在Twitter上关注我,或在Twitch上观看我的编程直播
常见问题
如何编辑我的配置?
打开lazydocker,点击左上角的"project"面板,然后按"o"(如果你的编辑器是vim,则按"e")。查看配置文档
如何让主面板中的文本自动换行?
未来我希望将这设为默认,但目前自动换行会导致一些CPU问题。如果你想启用自动换行,请使用gui.wrapMainPanel: true
如何选择文本?
由于我们支持鼠标事件,你需要在拖动鼠标时按住Option键,以表明你是在尝试选择文本而不是点击某个东西。或者,你可以通过gui.ignoreMouseEvents
配置值禁用鼠标事件。
Mac用户:其他选项请参见Issue #190。
为什么我看不到容器的日志?
默认情况下,我们只显示最近一小时的日志,以避免给机器造成过大压力。这可能是你首次启动lazydocker时看不到日志的原因。可以在配置的commandTemplates
中修改这一设置。
如果你在Docker容器中运行lazydocker,这是一个已知的bug,你无法看到日志或CPU使用情况。
替代方案
- docui - Skanehira抢先一步制作了docker终端UI,所以一定要看看那个仓库!我认为这两个仓库可以和谐共存:lazydocker更侧重于管理现有容器/服务,而docui更侧重于创建和配置它们。
- Portainer - Portainer试图解决同样的问题,但它通过浏览器而不是终端访问。它还支持docker swarm。
- 查看Awesome Docker列表以了解与Docker一起使用的类似工具。