lazydocker - 终端下的Docker管理利器,用于高效处理容器和镜像日常运维
你是否经常在终端里输入docker ps、docker logs、docker exec这类命令?当需要查看某个容器的日志时,要先记下容器ID,然后输入docker logs -f;想要重启容器,又要输入完整的容器名称;如果同时管理多个容器,频繁切换终端窗口和记忆命令参数,会让原本简单的操作变得繁琐。
Lazydocker正是为了解决这个“终端痛点”而生的。它是一个基于终端的Docker管理工具,提供了一个直观的交互式界面,让你可以在一个窗口中完成所有Docker操作。你可以把它理解为Docker命令行的“图形化界面”——但不需要离开终端,也不占用额外的系统资源。它就像是给Docker命令穿上了交互式的外衣,让原本枯燥的命令行操作变得高效而优雅。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | lazydocker |
| GitHub地址 | https://github.com/jesseduffield/lazydocker |
| 项目描述 | The lazier way to manage everything docker |
| 作者 | jesseduffield |
| 开源协议 | MIT License |
| Stars | 50427 |
| Forks | 1592 |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 2026-03-29 |
一、项目介绍
Lazydocker是由Jesse Duffield开发的一款终端用户界面(TUI)工具,旨在简化Docker的管理操作。它的名字本身就透露了设计哲学——让你用“更懒”的方式管理Docker。这里的“懒”不是贬义,而是指用更少的手动输入、更直观的操作,完成更多的任务。
Lazydocker并非取代Docker命令行,而是在其基础上增加了一个交互层。它实时读取Docker守护进程的信息,并以清晰的分栏布局展示在你的终端中。你可以使用键盘快捷键浏览容器列表、查看日志、监控资源、执行命令,所有操作都不需要离开当前的终端窗口。
Lazydocker的核心功能包括:
- 容器管理:查看所有容器的状态、名称、镜像、端口映射、运行时长,支持启动、停止、重启、删除、查看日志、进入容器Shell等操作。
- 镜像管理:列出本地镜像,支持删除、拉取新镜像。
- 卷管理:查看数据卷列表,支持删除无用卷。
- 网络管理:查看Docker网络,支持创建和删除网络。
- 服务管理(Docker Swarm):查看和管理Swarm服务。
- 栈管理:查看和管理Docker Compose栈。
- 资源监控:实时查看CPU和内存使用情况。
Lazydocker的设计深受Lazygit(同作者的Git TUI工具)的影响,拥有类似的操作逻辑和快捷键体系。如果你熟悉Lazygit,上手Lazydocker会非常快。
二、核心优势
Lazydocker相比传统Docker命令行和Web管理面板,有以下独特优势:
- 终端原生体验:Lazydocker运行在终端中,不需要启动浏览器,也不依赖任何外部服务。对于习惯使用终端的开发者来说,这提供了无缝的集成体验。你可以在SSH到远程服务器后直接启动Lazydocker,无需额外配置。
- 极低的资源占用:Lazydocker是一个轻量级的TUI应用,内存占用通常只有几十MB。相比运行一个完整的Web管理面板(如Portainer),它对服务器资源的消耗几乎可以忽略不计。
- 高效的键盘操作:所有操作都可以通过键盘完成,无需鼠标。快捷键设计合理,常用操作如查看日志、进入容器、重启服务都可以一键完成。一旦熟悉快捷键,操作速度会远超命令行和鼠标操作。
- 上下文感知的界面:Lazydocker的界面设计充分考虑了Docker管理的实际需求。主界面分为多个面板,可以同时看到容器列表、日志输出和资源监控。当你选中一个容器时,其他面板会自动更新显示该容器的相关信息,无需额外操作。
- 实时日志流:查看日志时,Lazydocker会实时滚动显示输出,效果类似
docker logs -f,但界面更加清晰。你可以随时暂停滚动、搜索关键词、或者复制日志内容。 - 跨平台支持:Lazydocker支持Windows、macOS和Linux,在所有主流操作系统上都能获得一致的使用体验。
- 开源社区活跃:拥有超过5万颗星,社区非常活跃。开发者响应速度快,新功能不断加入,bug修复及时。
三、适用场景
Lazydocker特别适合以下使用场景:
- 日常开发和调试:当你在开发过程中需要频繁查看容器日志、重启服务、清理镜像时,Lazydocker可以让这些操作变得异常轻松。不需要在多个终端窗口之间切换,一个界面搞定所有。
- 远程服务器运维:通过SSH连接到远程服务器后,直接运行
lazydocker,即可获得一个可视化的管理界面。这比单纯使用命令行更加直观,尤其是在排查问题时,可以同时查看多个容器的状态和日志。 - Docker学习与教学:对于刚接触Docker的初学者,Lazydocker提供了一个直观的学习环境。通过界面可以看到容器、镜像、卷之间的关系,理解Docker的核心概念。
- 快速故障排查:当生产环境出现问题时,时间非常宝贵。Lazydocker让你可以快速查看所有容器的状态,实时跟踪日志,无需记忆复杂的命令和参数。
- 多容器项目管理:如果你使用Docker Compose管理多个服务(如Web、数据库、缓存),Lazydocker可以让你在一个界面中看到所有相关容器的状态,并统一管理它们。
四、安装教程
系统要求
| 工具 | 用途 | 下载/安装方式 |
|---|---|---|
| Docker | 容器运行环境 | [https://docs.docker.com/get-docker/] |
Lazydocker的安装方式非常灵活,支持多种主流包管理器,也支持直接下载二进制文件。以下是各平台的详细安装步骤。
Linux安装
使用包管理器
Debian/Ubuntu(使用apt)
# 添加官方仓库
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# 安装lazydocker
sudo apt update
sudo apt install lazydockerArch Linux
# 使用pacman
sudo pacman -S lazydocker使用Homebrew(Linux)
brew install lazydocker使用二进制文件
# 下载最新版本
curl -LO https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_$(uname -s)_$(uname -m).tar.gz
# 解压
tar xzf lazydocker_*.tar.gz
# 移动到系统路径
sudo mv lazydocker /usr/local/bin/
# 验证安装
lazydocker --versionmacOS安装
使用Homebrew(推荐)
brew install lazydocker使用MacPorts
sudo port install lazydockerWindows安装
使用Scoop
scoop install lazydocker使用Chocolatey
choco install lazydocker使用二进制文件
从GitHub Releases下载Windows版本的exe文件,将其放在系统的PATH路径下(如C:\Windows\System32)。
使用Docker运行(通用方法)
如果你不想在主机上安装Lazydocker,也可以通过Docker运行:
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp:/tmp \
-e TERM=xterm-256color \
jesseduffield/lazydocker为了方便,可以创建一个别名:
alias lazydocker='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp -e TERM=xterm-256color jesseduffield/lazydocker'验证安装
安装完成后,在终端中输入lazydocker,如果出现交互式界面,说明安装成功。
五、使用示例
Lazydocker的操作主要通过键盘快捷键完成。下面详细介绍Lazydocker的界面布局、基本操作和实际使用场景。
界面布局
启动Lazydocker后,你会看到一个分栏界面,主要包含以下区域:
+------------------------+--------------------------+
| | |
| 容器列表 | 日志面板 |
| | |
+------------------------+--------------------------+
| | |
| 状态信息 | 命令输出 |
| | |
+------------------------+--------------------------+- 容器列表:显示所有容器的状态、名称、镜像、端口等信息。当前选中的容器会高亮显示。
- 日志面板:显示选中容器的实时日志输出。
- 状态信息:显示当前选中容器的详细信息,如ID、运行时长、环境变量等。
- 命令输出:显示执行命令后的输出结果。
基本快捷键
Lazydocker的快捷键设计非常直观,以下是常用的快捷键:
| 快捷键 | 功能 |
|---|---|
Tab | 切换面板焦点 |
Enter | 进入/确认 |
Esc | 返回上一级 |
q | 退出/关闭 |
/ | 搜索 |
ctrl+c | 退出程序 |
在容器列表面板中:
| 快捷键 | 功能 |
|---|---|
上下箭头 | 选择容器 |
空格键 | 重启容器 |
r | 查看容器日志 |
e | 进入容器Shell(/bin/sh) |
s | 停止容器 |
k | 杀死容器 |
d | 删除容器 |
m | 查看容器监控(CPU/内存) |
c | 执行自定义命令 |
l | 查看日志(在日志面板中显示) |
a | 查看所有容器(包括已停止的) |
在镜像列表面板中:
| 快捷键 | 功能 |
|---|---|
d | 删除镜像 |
p | 拉取镜像 |
t | 给镜像打标签 |
实际使用示例
示例1:查看并调试一个运行异常的容器
假设你的应用容器出现异常,需要查看日志并进行排查:
启动Lazydocker:
lazydocker- 使用上下箭头选择目标容器。
- 日志面板会自动显示该容器的实时日志。如果日志更新太快,可以按
ctrl+s暂停滚动,按ctrl+f搜索关键词。 按
e进入容器的Shell环境,可以直接在容器内执行命令进行调试:# 在容器内 ls -la cat /var/log/app.log exit- 按
Esc返回主界面。
示例2:快速重启一组相关的容器
如果你使用Docker Compose管理多个服务,需要重启整套服务:
- 在Lazydocker主界面,按
Tab键切换到“Stacks”面板(如果使用Compose)。 - 选择你要管理的Compose栈。
- 按
r重启整个栈。 - 按
l查看所有相关容器的日志。
示例3:清理无用的镜像和卷
长时间使用Docker后,可能会积累很多无用的镜像和卷,占用磁盘空间:
- 按
Tab键切换到“Images”面板。 - 选择不需要的镜像,按
d删除。 - 按
Tab键切换到“Volumes”面板。 - 选择无用的卷,按
d删除。 - 对于悬空镜像(没有标签的镜像),可以按
x执行清理命令。
示例4:监控容器资源使用
- 在容器列表中选择一个容器。
- 按
m进入监控模式。 - 你会看到类似
docker stats的实时数据,以图表形式显示CPU和内存使用情况。 - 按
Esc退出监控模式。
示例5:自定义命令
Lazydocker支持执行自定义Docker命令:
- 在容器列表中选择一个容器。
- 按
c弹出命令输入框。 - 输入自定义命令,例如
docker exec -it mycontainer bash。 - 按
Enter执行,输出会显示在命令输出面板中。
高级使用技巧
使用配置文件
Lazydocker支持通过配置文件进行个性化设置。配置文件位于:
- Linux/macOS:
~/.config/lazydocker/config.yml - Windows:
%APPDATA%\lazydocker\config.yml
示例配置文件内容:
gui:
theme:
lightTheme: false
activeBorderColor:
- green
- bold
inactiveBorderColor:
- white
language: 'en'
os:
openCommand: 'open {{filename}}'
commandTemplates:
dockerCompose: 'docker-compose'使用环境变量
你可以通过环境变量调整Lazydocker的行为:
# 设置日志显示的行数
export LAZYDOCKER_LOG_LINES=200
# 设置Docker socket路径
export DOCKER_HOST=unix:///custom/docker.sock与Lazygit配合使用
如果你同时使用Lazygit(Git的TUI工具)和Lazydocker,可以建立肌肉记忆,因为两者的快捷键非常相似。这种统一的操作体验可以显著提升开发效率。
六、常见问题
问题1:启动lazydocker后显示“Cannot connect to the Docker daemon”
这通常表示Lazydocker无法连接到Docker守护进程。请检查:
- Docker服务是否正在运行:
docker version(应该能正常输出) - 当前用户是否有权限访问Docker套接字:
ls -la /var/run/docker.sock,如果用户不在docker组中,需要添加:sudo usermod -aG docker $USER,然后重新登录。
- Docker服务是否正在运行:
问题2:在macOS上安装后无法运行
macOS可能会提示“无法验证开发者”。解决方法:
- 在Finder中找到lazydocker文件(通常在
/usr/local/bin),右键点击,选择“打开”,然后确认允许运行。 - 或者使用Homebrew重新安装:
brew reinstall lazydocker。
- 在Finder中找到lazydocker文件(通常在
问题3:某些快捷键不起作用
确保你的终端模拟器支持完整的键盘输入。部分终端(如Windows的PowerShell)可能无法识别某些快捷键。建议使用:
- Windows:Windows Terminal、WSL终端
- macOS:iTerm2、默认终端
- Linux:大多数终端都可以正常工作
问题4:如何查看所有容器(包括已停止的)
在容器列表面板中,按
a键可以切换显示所有容器(包括已停止的)和仅显示运行中的容器。当前模式会在界面顶部显示。问题5:如何复制日志内容
要复制日志面板中的内容:
- 按
Tab切换到日志面板。 - 使用鼠标选中要复制的内容(如果终端支持鼠标),或者按
ctrl+shift+c(取决于终端)。 - 也可以使用
/搜索后,按ctrl+a全选,然后复制。
- 按
问题6:在远程服务器上使用lazydocker时很慢
如果通过SSH连接远程服务器使用lazydocker,网络延迟可能会导致界面响应慢。这是正常的,因为所有操作都需要通过SSH传输。解决方案:
- 使用更快的网络连接
- 考虑在远程服务器上本地运行lazydocker(即直接在服务器上安装)
- 使用
-X选项启用X11转发(不推荐,会增加延迟)
问题7:如何退出lazydocker
按
q键退出当前面板,多次按q直到完全退出程序。或者直接按ctrl+c强制退出。
七、总结
Lazydocker是一个极具创新的工具,它将Docker管理的效率和体验提升到了一个新的高度。它没有试图取代命令行,而是以“终端即界面”的理念,为Docker操作提供了更直观、更高效的方式。
对于日常使用Docker的开发者来说,Lazydocker的价值在于:
- 节省时间:不需要频繁切换终端窗口,不需要记忆复杂的命令参数,所有操作都在一个界面中完成。
- 降低认知负担:通过可视化的方式展示容器状态、日志和监控数据,让你可以更直观地理解系统的运行状况。
- 提升调试效率:查看日志、进入容器、重启服务都可以一键完成,让问题排查更加迅速。
- 保持终端习惯:对于那些不愿离开终端、不想使用Web管理面板的用户,Lazydocker提供了一个完美的折中方案。
Lazydocker的作者Jesse Duffield同样是Lazygit的作者,两款工具的设计哲学一脉相承——用“懒人”的方式完成复杂的工作。如果你还没有尝试过Lazydocker,强烈建议花几分钟时间安装体验一下。一旦习惯了它的操作方式,你会发现自己的Docker管理工作效率有了质的飞跃。
无论是个人开发环境,还是远程服务器运维,Lazydocker都能成为你工具箱中不可或缺的一员。试试看,也许你会爱上这种“懒人”式的管理方式。
Overall, lazydocker is a masterpiece of TUI design. It takes everything tedious about Docker CLI operations and makes them effortless. The 50k stars are well deserved. If you use Docker regularly, you owe it to yourself to try lazydocker. It will change how you work with containers.
lazydocker让我从“记命令”的负担中解放出来。现在管理Docker容器就像操作桌面软件一样直观,但又不离开终端。
The ability to pause log scrolling is surprisingly useful. When there's a burst of logs, I can pause, investigate, then resume without missing anything.
MIT协议很友好,可以放心在公司内部部署使用。安装包也很小,下载下来就能用,不需要复杂配置。
I compared lazydocker with other Docker TUIs. The combination of features, polish, and active development makes it the best one out there.