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 异步

Download history 1301/week @ 2024-03-29 1130/week @ 2024-04-05 1495/week @ 2024-04-12 1347/week @ 2024-04-19 982/week @ 2024-04-26 908/week @ 2024-05-03 1241/week @ 2024-05-10 1407/week @ 2024-05-17 976/week @ 2024-05-24 1010/week @ 2024-05-31 1139/week @ 2024-06-07 1087/week @ 2024-06-14 1399/week @ 2024-06-21 1239/week @ 2024-06-28 1342/week @ 2024-07-05 1168/week @ 2024-07-12

每月下载量5,317次
3 个Crate中使用 (通过 containerd-shim)

Apache-2.0

39KB
293

containerd的Shim协议和客户端

Crates.io docs.rs Crates.io CI

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