LazyDocker:基于终端UI管理Docker

什么是 LazyDocker ?

LazyDocker 是适用于 DockerDocker Compose 的新的免费开源的终端 UI ,用于显示 DockerDocker-compose 容器的状态,日志以及重新启动/删除/重建容器等,采用 Go 语言编写,使用了 gocui 库。

Linux 服务器上管理 Docker 容器时,通常有两种选择:安装或部署基于 WebGUI 或从命令行管理容器,而 LazyDocker 介于两者之间,采用了基于 terminal 的 简单 UI

安装

与容器相关的应用,都需要绑定挂载 /var/run/docker.sock ,包括我们之前安装的 portainerwatchtowerGlancesNetdata 等。

什么是 /var/run/docker.sock ?

/var/run/docker.sockDocker API 的主要入口,简单地说,它是 Docker 守护进程(Docker daemon)默认监听的 Unix 域套接字(Unix domain socket),容器中的进程可以通过它与 Docker 守护进程进行通信。

title

图片来自:https://betterprogramming.pub/about-var-run-docker-sock-3bfd276e12fd

但是群晖的 Docker 管理器并不支持挂载 /var/run/docker.sock 文件,所以这次我们需用命令行来安装

命令行安装还是比较简单的,用 SSH 客户端连上群晖,执行下面👇的命令

老苏常用的SSH 客户端主要是 FinalshellPuTTY

1
2
3
4
5
6
7
8
9
10
11
12
# 在 docker 中新建目录 lazydocker
mkdir -p /volume2/docker/lazydocker

# 进入 lazydocker
cd /volume2/docker/lazydocker

# 启动容器
docker run --rm -it \
--name lazydocker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume2/docker/lazydocker:/.config/jesseduffield/lazydocker \
lazyteam/lazydocker

也可以直接进 终端机 使用

使用

键盘和鼠标都支持 LazyDocker 界面上的导航操作

其中每个命令都有一个预定义的键,用于快速执行常用操作。官网提供了一个多语言的键值说明,不过没有中文,只能凑合着看看英文的:https://github.com/jesseduffield/lazydocker/blob/master/docs/keybindings/Keybindings_en.md

可一键实现:

  • 查看 DockerDocker-Compose 容器环境的状态;
  • 查看容器/服务日志;
  • 查看容器 ASCII 图;
  • 定制图表以查看更详细的信息;
  • 绑定容器/服务;
  • 重启/移除/重建容器或服务;
  • 查看给定镜像的父层;
  • 修改占用磁盘空间的容器、镜像或卷;

自定义设置

lazydocker 中有个 config.yml 文件,但是现在打开只有一行

1
reporting: "on"

在块 commandTemplatescustomCommands 配置中可以修改命令,也可以补充您自己的命令。在 ➡️ https://github.com/jesseduffield/lazydocker/blob/master/docs/Config.md 有详细的说明。

不过老苏改了半天并没发现有什么明显的变化,可能是因为本身就是 Default,也没有再继续深入研究下去😅

小结

命令行管理容器,需要记命令,LazyDocker 将其简化为了快捷键,所以难度上比命令行方式简单得多。

但是相比基于 WebGUI 界面,显然易用性还是有差距的,但胜在灵活。

老苏个人觉得如果在 linux 上,LazyDocker 可能是一个不错的选择,但是在群晖上似乎没什么必要。

另外也不建议用 Docker 方式安装 LazyDocker,会看不到日志或 CPU 使用率,这是一个已知的 Bug

参考文档

jesseduffield/lazydocker: The lazier way to manage everything docker
地址:https://github.com/jesseduffield/lazydocker

A Look at Lazydocker, a Cursor-Based Docker Management Tool – The New Stack
地址:https://thenewstack.io/a-look-at-lazydocker-a-cursor-based-docker-management-tool/