00:00:00你可能还在用五个终端和无尽的滚动来调试 Docker。
00:00:04或者你可以只打开一个浏览器窗口,实时查看所有容器日志。
00:00:08这就是 Dozzle。
00:00:10一个开源的实时日志查看器,它能将容器日志实时流式传输到
00:00:13你的浏览器,而且实际上并不会存储这些日志。
00:00:15这就是为什么它能保持约 7MB 的极小体积且运行迅速。
00:00:19让我们来看看如何设置它,并立即将其投入实际应用。
00:00:22[音乐]
00:00:28你可能打开了三个终端,甚至五个。
00:00:30我们在每一个终端上都运行着 Docker logs。
00:00:32我们在不停地滚动、搜索、切换标签页。
00:00:35这仅仅是处理容器化应用时付出的代价。
00:00:37现在 Dozzle 为我们提供了一种更简单的方法,可以在一个地方实时看到所有内容,
00:00:41而无需构建一整套日志堆栈。
00:00:43它支持 Docker、Docker Swarm、Kubernetes 以及
00:00:46使用 agent 的多主机设置,而且第 10 版刚刚发布。
00:00:50新版本增加了告警、Webhook、云支持和重要的安全更新。
00:00:54它专为一件事而生:调试时的实时可见性。
00:00:57是时候向你展示如何设置它,
00:00:59以及为什么它能彻底改变你调试 Docker 应用的方式。
00:01:02如果节省开发工作流的时间对你很重要,请订阅我们。
00:01:06我们一直在关注能带来改变的实用工具。
00:01:09乍听之下,Dozzle 似乎只是另一个日志工具。
00:01:12我们预感它会很臃肿,需要存储数据,
00:01:15或者需要数据库支持,但事实恰恰相反。
00:01:19让我们在 60 秒内完成设置。
00:01:22首先,使用我在这里运行的命令拉取镜像。
00:01:26我要运行它,挂载 Docker 套接字并暴露端口,就这么简单。
00:01:30没有数据库,没有索引,我也不需要等待。
00:01:33我改了端口,因为我已经运行了其他容器,
00:01:37其中一个占用了默认端口。
00:01:39现在我只需打开浏览器,访问 localhost,
00:01:42就能立即看到我们运行中的容器。
00:01:44你原本以为会出现的繁琐配置从未发生。
00:01:47它的运行效果非常好。
00:01:49如果你使用 Docker Compose,只需定义服务并指定镜像,映射端口,
00:01:53挂载 Docker 套接字,并传入禁用分析的标志。
00:01:56然后运行 docker-compose up,大功告成。
00:01:59唯一需要注意的就是套接字权限,
00:02:02并确保你运行的是第 10 版或更新版本以获取最新功能。
00:02:07这就是整个设置流程。
00:02:08这里没什么复杂的,但它的 UI 和实用性却非常惊人。
00:02:13现在,这里是让一切变得豁然开朗的地方。
00:02:16当你打开 Dozzle 时,你会看到所有运行中容器的简洁列表。
00:02:20没有冗余的仪表盘,只有我们的服务。
00:02:24我可以在搜索栏开始输入,比如 “DB”。
00:02:27你的数据库容器会立即出现,不需要精确的名称。
00:02:32点击一个容器,日志就开始实时流式传输。
00:02:35我们不需要刷新任何页面,它会自动完成。
00:02:38我创建了一个虚拟容器来模拟失败的请求,但是
00:02:41如果你已经有自己的应用,只需尝试触发一个错误请求。
00:02:46一旦错误发生,它就会出现在浏览器中。
00:02:48我不需要切换终端,也不需要重新运行命令。
00:02:51一旦出现故障,我立刻就能在界面上看到。
00:02:54在第 10 版中,新增了由 DuckDB 驱动的 SQL 模式。
00:02:58你可以在终端切换模式并运行查询,比如选择特定条目。
00:03:03虽然这里演示的很基础,但我可以发起查询,
00:03:05结果会直接返回在 Dozzle 中,明白吗?
00:03:07它为我们提供了一种新的思路。
00:03:09与其用肉眼扫描,我们现在可以直接查询日志。
00:03:13你还可以定义条件,比如 CPU 使用率超过 80%,
00:03:17并关联一个 Webhook 到 Slack 或其他端点,
00:03:20这让它感觉更具交互性。
00:03:22那是最新更新中的功能之一。
00:03:24在将其暴露到本地机器之外以前,
00:03:27请务必启用身份验证。
00:03:29设置环境变量,
00:03:31并提供一个用户配置文件,以此来保护访问权限。
00:03:35在 Kubernetes 中,可以使用 Manifest 或 Helm 进行部署。
00:03:38挂载必要的日志并通过 Service 暴露。
00:03:42在结束之前,还有最后两点想法。
00:03:44我想明确一下它是什么,以及它不是什么。
00:03:48Dozzle 简单、轻量,并专注于实时流传输。
00:03:52它不存储日志,这让它保持快速且对隐私更友好。
00:03:57但也意味着它并非为长期留存而设计。
00:04:00所以请根据你的需求来选择。
00:04:02如果你需要持久化存储和仪表盘,
00:04:04市面上已经有很多我们都在用的更好选择了。
00:04:07但作为一种实时流式传输、分析容器的开源方式,
00:04:11我觉得这非常酷。
00:04:13你在切换终端、
00:04:15扫描日志上多花一分钟,就少了一分钟去解决问题。
00:04:18Dozzle 有望消除这个问题,至少看起来是这样。
00:04:22它集中了日志,增加了过滤、SQL 查询和分屏视图,
00:04:27并在第 10 版中加入了告警,同时没有变得臃肿或复杂。
00:04:31在你的下一个 Docker 项目中试试它,看看你能多快发现问题。
00:04:35如果你觉得有帮助,请务必订阅以获取更多针对开发者的内容。
00:04:39我们下期视频再见。