Dockyard 是更快的 Lazydocker,用 Rust 编写(因为当然是)

发布: (2026年2月5日 GMT+8 19:52)
5 分钟阅读
原文: Dev.to

Source: Dev.to

我在使用 Lazy Docker 时感到非常满意。它能工作,稳定可靠,恰好完成了 Docker TUI 应该具备的所有功能。

随后,在摄入了大量咖啡因之后,我产生了一个没人需要我拥有的想法:

“如果用 Rust 来编写会更好。”

当时并没有需要解决的问题,也没有未满足的需求,更没有用户请求。但我还是照做了。

这就是 Dockyard。

Dockyard TUI

没有人遇到的问题

Lazy Docker 是一个很好的工具,但如果你盯着它看得够久,就会说服自己它存在一些问题:

  • 它是用 Go 编写的
  • 冷启动大约需要 247 ms
  • 它可能使用约 40 MB 的内存
  • 二进制文件大小为 13 MB

这些都不算坏事,也并不重要。我仍然选择在意。

Dockyard

在与 borrow checker 争论了三周后,我得到了 Dockyard:一个 Docker 容器管理器,功能大约相当于 Lazy Docker 的 80 %,但它是用 Rust 编写的,启动速度明显更快。

启动时间

工具冷启动热启动
Lazy Docker~247 ms~89 ms
Dockyard~31 ms~12 ms

Dockyard 启动得足够快,以至于你会短暂怀疑它到底有没有真的做任何事。
实际影响:如果你一年每天打开 Docker TUI 十次,你大约可以节省 43 秒。这不足以改变你的生活,但感觉还是挺对的。

内存使用

  • Lazy Docker: ~38–41 MB
  • Dockyard: ~6–8 MB

大约 82 % 的降低。对现代机器来说意义不大,但我仍然会在有机会时提到它。

二进制大小

  • Lazy Docker: ~13 MB
  • Dockyard: ~2.7 MB(已剥离)

你的磁盘空间很大,所以这并不重要——但我花了三天时间让它变得重要。

确实重要的开发指标

指标Lazy DockerDockyard
第一次成功构建的时间几分钟三周
生命周期注解写入的行数0847
随意提及 Rust 的能力没有过多
生活质量决策合理可疑

Dockyard 实际做的事情

  • 列出容器、镜像和卷
  • 启动、停止并删除容器
  • 拉取并删除镜像
  • 使用 bollard 直接与 Docker API 通信
  • 启动快速,体积小巧,干净退出
  • 在没有垃圾回收器的情况下实现内存安全
  • 即使在未使用线程的情况下也保持线程安全
  • 对尚未拥有的并发保持无畏

它目前还不具备的功能

  • 指标图表
  • 高级调试工具
  • 除我之外的用户

Lazy Docker 对大多数人仍然是更好的工具。Dockyard 更快、更小,但功能不够完整。这些取舍是有意为之。Dockyard 的安装过程本身就提醒你已经选择了这条路。

为什么我真的构建了它

我最初用 Python 编写了一个 Docker TUI 供个人使用。随后我把它部署在一台小型 VPS 上,并决定学习 Rust 会比优化 Python 更容易。这个想法不太对,但却很有教育意义。

我学到了:

  • 异步 Rust
  • Docker API 的整体结构
  • 终端 UI 布局
  • Docker 暴露了令人惊讶的多种时间戳格式

我还发现,削减启动时间的毫秒数是一种极其有效的多巴胺来源。Dockyard 的存在是因为我想从头到尾理解这个问题,而不是因为生态系统需要另一个工具。

结论

Dockyard 比 Lazy Docker 更好吗?
不。

它更快吗?
是的,只是你可能感觉不到。

你应该使用它吗?
如果你喜欢小巧、快速的二进制文件,以及由过于用心的人写的 Rust 代码,或许可以。

这三周的投入值得吗?
客观来说,不。

我会再做一次吗?
可能会。

Back to Blog

相关文章

阅读更多 »

当 AI 给你一巴掌

当 AI 给你当头一棒:在 Adama 中调试 Claude 生成的代码。你是否曾让 AI “vibe‑code” 一个复杂功能,却花了数小时调试细微的 bug……