containerd中文翻译系列(十三)流处理器

61 阅读1分钟

处理器 API

处理器是一种二进制 API,可通过内容流工作。

传入的内容流将通过 STDIN 理程序,而流处理程序将在 STDOUT "上输出处理后的数据流。 如果遇到错误,必须通过 STDERR 返回错误信息,同时返回非零退出状态。

可以通过有效载荷向流处理器提供附加信息。 有效载荷以 protobuf.Any 类型编译,可以封装任何类型的 序列化数据结构。

在 Unix 系统上,有效载荷(如果可用)将在进程的 fd 3 中提供。

在 Windows 系统上,有效载荷(如果可用)通过命名管道提供,管道的路径设置为环境变量 STREAM_PROCESSOR_PIPE的值。

配置

要为 containerd 配置流处理器,需要在配置文件中添加条目。 stream_processors "字段是一个映射,因此用户可以将多个处理器串联起来 来改变内容流。

处理器字段:

  • Key - 处理器的 ID,用于将特定的有效载荷传递给处理器。
  • accepts - 处理器可处理的媒体类型。
  • returns - 处理器返回的媒体类型。
  • path - 处理器二进制文件的路径。
  • args - 传给处理器二进制文件的参数。
version = 2

[stream_processors]
  [stream_processors."io.containerd.processor.v1.pigz"]
	accepts = ["application/vnd.docker.image.rootfs.diff.tar.gzip"]
	returns = "application/vnd.oci.image.layer.v1.tar"
	path = "unpigz"
	args = ["-d", "-c"]