Dockerman Docs
CLI

ストリーミング契約

NDJSON envelope、コマンド固有出力、heartbeat、backpressure、signal。

複数の CLI コマンドが daemon stream を利用しますが、すべての長時間コマンドが同じ出力形式ではありません。パーサーを作る前に各コマンドの --help を確認してください。

Daemon stream envelope

daemon stream を JSON で公開するコマンドは、stdout に 1 行 1 envelope の NDJSON を出力します。シーケンス番号は 0 から始まります。

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

enderror はどちらも終端フレームで、1 つの stream が両方を出すことはありません。error には codemessage、任意の details が含まれます。

daemon は通常 15 秒ごとに heartbeat を送り、30 秒間フレームがないと CLI はコード 4 で終了します。256 フレームのバッファでドロップが起きた場合、次の任意タイプのフレーム前に件数を送ります。

コマンド固有の例外

  • events は常に outer NDJSON envelope を出力し、プレーンログ行モードはありません。
  • Trivy --json は独自の progress/result payload を出力し、outer StreamFrameEnvelope を使いません。
  • 現在のイメージ進捗表示は stdout へ出力します。
  • プレーン出力はコマンドごとに異なり、進捗が常に stderr とは限りません。

キャンセルと終了コード

SIGINT または SIGTERM でキャンセルを要求して終了しますが、すべての処理中フレームを排出する保証はありません。

コード意味
0正常終了
1検証、RPC、stream エラー
2CLI 引数解析エラー
3Daemon 検出または handshake 失敗
4Heartbeat timeout
130SIGINT
143SIGTERM

dockerman schema で daemon RPC メタデータを確認できます。Trivy 固有出力は outer daemon envelope ではありません。