mcpField
L
Lazydocker

Lazydocker

官方精选
github.com云与 DevOps53.2klazydocker27 周前更新
代码仓库访问官网

关于 Lazydocker

Lazydocker 提供交互式的终端界面来管理 Docker 容器、服务、镜像和日志。支持快速浏览容器状态、查看实时日志和资源统计,简化日常容器操作流程。

主要功能

  1. 01浏览和管理 Docker 容器及服务的状态
  2. 02查看容器的实时日志输出
  3. 03监控容器的 CPU 和内存资源使用

适用场景

  1. 01开发过程中快速调试和监控容器
  2. 02在生产环境中排查容器运行问题
  3. 03管理本地 Docker 实例的多个服务

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install lazydocker

安装完成后运行lazydocker --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
lazydocker

详细介绍

README 配图

一个适用于 docker 和 docker-compose 的简易终端 UI,使用 Go 和 gocui 库编写。

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

Gif

演示

赞助者

本项目的维护得益于所有贡献者和赞助者的支持。如果你想赞助本项目,并让你的头像或公司徽标显示在下方,请点击此处。💙

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 BeaumontREADME 配图HollyJames SantucciJeff ForcierREADME 配图Maciej T. NowakFarzad MajidfayyazYuryREADME 配图Andreas KurthBraden SteffaniakJordan GillardSebastianGeorge SpanosFrantisek StankoAndy SlezakMartin KockIllarion KoperskiREADME 配图Jesse AlamaCodacyBrettJan HeijmansKevin Nowaldsem pruijsOmar LuqEthan LiREADME 配图Brian MacAskillMaxinbrJan ZenknerVictor AremuREADME 配图Igor RamazanovElliott Maguiren8n - Workflow Automationkaleb allmonJosh ThomasJJFrederick MorlockDarren CraineMaximilian LangenfeldNurzhanDavis BulsGrec MarcsainuMarc Güell SegarraREADME 配图Chris OlsenVladimir PopovNeil LambertShaun GarwoodDavid Heinemeier HanssonWayan jimmy

电梯介绍

先吐槽一下:有东西不能用了?也许某个服务挂了。docker-compose ps。没错,就是那个还有问题的微服务。没关系,我重启一下:docker-compose restart。好了,现在再试试。等等,问题还在。嗯。docker-compose ps。好吧,看来这个服务刚启动就立刻停止了。如果我当时在看日志流,应该就能发现,但里面有其他服务的大量日志,很杂乱。我可以用 docker compose logs --follow myservice 只查看这个服务的日志,但每次服务停止,这个命令也会退出,所以每次重启服务时,我都得重新运行这个命令。或者,我可以运行 docker-compose up myservice,然后在那个终端窗口里,如果服务停止了,就再次运行 up;但这样一来,即使我不再关心它的日志,这个服务也会一直占着一个终端窗口。我想,想收回终端空间时,可以按 ctrl+P,Q,但是……等等,不知为什么行不通。我该用 ctrl+C 吗?我记不清这会关闭前台进程,还是会杀掉实际的服务。

真让人头疼!

记住 Docker 命令很难。记住别名稍微容易点。在多个终端窗口中跟踪容器几乎不可能。要是能在一个终端窗口里看到所需的所有信息,常用命令也都能一键运行(还能添加自定义命令),那该多好。Lazydocker 的目标就是让这个梦想成真。

需求

  • Docker >= 29.0.0(API >= 1.24)
  • Docker-Compose >= 1.23.2(可选)

安装

Homebrew

通常可以在 Homebrew core 中找到 lazydocker formula,但我们建议添加我们的 formula 仓库,以获取频繁更新的版本。它也适用于 Linux。

添加仓库:

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

Docker Pulls Docker Stars Docker Automated

  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

    • 你可能还想创建一个别名,例如:

      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

git clone https://github.com/jesseduffield/lazydocker.git
cd lazydocker
go install

你也可以使用 go run main.go 一步完成编译和运行(这句双关绝对是故意的)

使用方法

在终端中调用 lazydocker。我自己经常使用它,所以为它创建了一个别名,如下所示:

echo "alias lzd='lazydocker'" >> ~/.zshrc

(你可以将 .zshrc 替换为你正在使用的任意 rc 文件)

实用功能

所有功能都只需按一下键即可使用(或点击一下!鼠标支持万岁):

  • 一目了然地查看 Docker 或 docker-compose 容器环境的状态
  • 查看容器/服务的日志
  • 查看容器指标的 ASCII 图表,让你不仅感觉像开发者,看起来也像开发者
  • 自定义图表,以测量几乎任何你想要的指标
  • 连接到容器/服务
  • 重启/移除/重建容器/服务
  • 查看给定镜像的祖先层
  • 清理占用磁盘空间的容器、镜像或卷

参与贡献

还有很多工作要做!请查看贡献指南。 如果想讨论不适合在此仓库中讨论的内容,欢迎加入 Discord 频道

README 配图

捐赠

如果你想支持 lazydocker 的开发,可以考虑赞助我(GitHub 将在 12 个月内按 1:1 的比例匹配所有捐款)

社交媒体

如果你想了解我(Jesse)在开发方面的近况,可以在 twitter 上关注我,或在 twitch 上观看我编程。

常见问题

如何编辑配置?

打开 lazydocker,点击左上角的“project”面板,然后按“o”(如果你的编辑器是 vim,则按“e”)。请参阅配置文档

如何让主面板中的文本自动换行?

以后我想将此设为默认选项,但目前自动换行会带来一些 CPU 问题。若要启用自动换行,请使用 gui.wrapMainPanel: true

如何选择文本?

由于我们支持鼠标事件,你需要在拖动鼠标时按住 option,以表明你想选择文本,而不是点击某个项目。或者,你也可以通过 gui.ignoreMouseEvents 配置值禁用鼠标事件。

Mac 用户:请参阅问题 #190,了解其他选项。

为什么看不到容器日志?

默认情况下,我们只显示最近一小时的日志,以免给机器造成太大负担。这可能就是你初次启动 lazydocker 时看不到日志的原因。你可以在配置的 commandTemplates 中覆盖此设置。

如果你在 Docker 容器中运行 lazydocker,有一个已知问题:你无法查看日志或 CPU 使用情况。

替代方案

  • docui - Skanehira 抢先做出了 Docker 终端 UI,欢迎查看这个仓库!我认为这两个仓库可以和谐共存:lazydocker 更侧重于管理现有容器/服务,而 docui 更侧重于创建和配置容器/服务。
  • Portainer - Portainer 试图解决相同的问题,但它通过浏览器而不是终端访问。它还支持 Docker Swarm。
  • 请参阅 Awesome Docker 列表,了解用于 Docker 的类似工具。

评论

支持 Markdown