Dockerman Docs
CLI

ストリーミング契約

NDJSON エンベロープ、コマンド固有の出力、heartbeat、backpressure、シグナル。

複数の CLI コマンドがデーモンストリームを使いますが、長時間コマンドの出力形式は揃っていません。パーサーを書く前に、各コマンドの --help を確認してください。

デーモンストリームのエンベロープ

デーモンストリームを JSON で出すコマンドは、stdout に 1 行 1 エンベロープの NDJSON を出力します。シーケンス番号は 0 から始まります。

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

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

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

コマンド固有の例外

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

キャンセルと終了コード

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

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

dockerman schema でデーモン RPC のメタデータを確認できます。Trivy 固有の出力は、外側のデーモンエンベロープではありません。