8个版本 (破坏性更新)
0.7.0 | 2024年3月13日 |
---|---|
0.6.0 | 2023年10月30日 |
0.5.0 | 2023年8月24日 |
0.4.0 | 2023年8月2日 |
0.1.2 | 2021年12月30日 |
#195 in 异步
每月下载量5,317次
在 3 个Crate中使用 (通过 containerd-shim)
39KB
293 行
containerd的Shim协议和客户端
containerd-shim-protos
包含了与containerd的runtime v2 shims交互的TTRPC绑定和客户端/服务器代码。
运行时
这个crate主要被期望用于与containerd的shim运行时交互。运行时v2为运行时作者提供了一等shim API以集成到containerd中。shim API是最小化的,并且仅限于容器的执行生命周期。
要详细了解containerd的shim v2运行时的工作原理,请参阅 文档。
设计
containerd-shim-protos
crate提供了 Protobuf 消息和 TTRPC 服务定义,用于 Containerd shim v2 协议。
消息和服务定义是从 vendor/
下的protobuf源文件自动生成的,使用了 ttrpc-codegen。因此,请不要编辑这些自动生成的源文件。
如果需要升级/修改,请按照以下步骤操作
- 从上游项目同步最新的protobuf源文件到目录'vendor/'。
- 通过以下命令重新生成源文件:
cargo build --features=generate_bindings
。 - 提交同步的protobuf源文件和自动生成的源文件,保持它们同步。
使用方法
在您的 Cargo.toml
中将 containerd-shim-client
添加为依赖项
[dependencies]
containerd-shim-protos = "0.4"
基本客户端代码如下
use containerd_shim_protos as client;
let client = client::Client::connect("unix:///containerd-shim/shim.sock").expect("Failed to connect to shim");
let task_client = client::TaskClient::new(client);
let context = client::ttrpc::context::with_timeout(0);
let req = client::api::ConnectRequest {
id: String::from("1"),
..Default::default()
};
let resp = task_client.connect(context, &req).expect("Connect request failed");
示例
构建示例的方式
# build sync connect, client and server
$ cargo build --example shim-proto-connect
$ sudo ./shim-proto-connect unix:///containerd-shim/shim_socket_path.sock
$ cargo build --example shim-proto-client
$ cargo build --example shim-proto-server
# build async connect, client and server
$ cargo build --example shim-proto-connect-async --features async
$ cargo build --example shim-proto-client-async --features async
$ cargo build --example shim-proto-server-async --features async
依赖项
~4–14MB
~176K SLoC