Dockerman 文档
命令行

流式契约

NDJSON envelope、命令特定输出、心跳、背压和信号行为。

多个 CLI 命令会消费 daemon stream,但并非所有长时间运行命令都使用相同输出。编写解析器前请检查对应命令的 --help

Daemon stream envelope

把 daemon stream 公开为 JSON 的命令会在 stdout 每行输出一个 NDJSON envelope,序列号从 0 开始。

{"seq":0,"type":"data","payload":{"line":"hello"}}
{"seq":1,"type":"heartbeat"}
{"seq":2,"type":"dropped","payload":{"count":12}}
{"seq":3,"type":"end"}

enderror 都是终止帧,同一 stream 只会产生一种终止结果。error payload 包含 codemessage 和可选 details

Daemon 通常每 15 秒发送心跳;连续 30 秒没有帧时 CLI 以代码 4 退出。256 帧缓冲区用于保护生产者,发生丢帧后会在下一个任意类型的帧前发送计数。

命令特例

  • events 始终输出 outer NDJSON envelope,没有纯日志行模式。
  • Trivy --json 输出自己的 progress/result payload,不使用 outer StreamFrameEnvelope
  • 当前 CLI 的镜像进度写入 stdout。
  • 纯文本输出由命令决定,不要假设进度总在 stderr。

取消与退出码

收到 SIGINTSIGTERM 后,CLI 会请求取消并退出,但不承诺排空全部在途帧。

代码含义
0正常完成
1校验、RPC 或 stream 错误
2CLI 参数解析错误
3Daemon 发现或握手失败
4心跳超时
130SIGINT
143SIGTERM

使用 dockerman schema 查看 daemon RPC 元数据。Schema 不会把 Trivy 的命令特定输出变成 outer daemon envelope。