Skip to content

Commit ea13c9f

Browse files
Merge pull request #3518 from crosbymichael/processors
Add docs for stream processors
2 parents f06e605 + 0dadef1 commit ea13c9f

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

docs/stream_processors.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Stream Processors
2+
3+
## Processor API
4+
5+
Processors are a binary API that works off of content streams.
6+
7+
The incoming content stream will be provided to the binary via `STDIN`
8+
and the stream processor is expected to output the processed stream on
9+
`STDOUT`. If errors are encountered, errors MUST be returned via `STDERR`
10+
with a non-zero exit status.
11+
12+
Additional information can be provided to stream processors via a payload.
13+
Payloads are marshaled as `protobuf.Any` types and can wrap any type of
14+
serialized data structure.
15+
16+
On Unix systems, the payload, if available, is provided on `fd 3` for the process.
17+
18+
On Windows systems, the payload, if available, is provided via a named pipe with the
19+
pipe's path set as the value of the environment variable `STREAM_PROCESSOR_PIPE`.
20+
21+
## Configuration
22+
23+
To configure stream processors for containerd, entries in the config file need to be made.
24+
The `stream_processors` field is an array so that users can chain together multiple processors
25+
to mutate content streams.
26+
27+
Processor Fields:
28+
29+
* `id` - ID of the processor, used for passing a specific payload to the processor.
30+
* `accepts` - Accepted media-types for the processor that it can handle.
31+
* `returns` - The media-type that the processor returns.
32+
* `path` - Path to the processor binary.
33+
* `args` - Arguments passed to the processor binary.
34+
35+
```toml
36+
[[stream_processors]]
37+
id = "io.containerd.processor.v1.pigz"
38+
accepts = ["application/vnd.docker.image.rootfs.diff.tar.gzip"]
39+
returns = "application/vnd.oci.image.layer.v1.tar"
40+
path = "unpigz"
41+
args = ["-d", "-c"]
42+
```

0 commit comments

Comments
 (0)