Crates.io | containerd-shim-protos |
lib.rs | containerd-shim-protos |
version | 0.7.2 |
source | src |
created_at | 2021-12-28 09:17:02.139174 |
updated_at | 2024-10-04 19:03:38.971509 |
description | TTRPC bindings for containerd shim interfaces |
homepage | https://containerd.io |
repository | https://github.com/containerd/rust-extensions |
max_upload_size | |
id | 504097 |
size | 163,939 |
containerd-shim-protos
contains TTRPC bindings and client/server code to interact with containerd's runtime v2 shims.
This crate is mainly expected to be useful to interact with containerd's shim runtime. Runtime v2 introduces a first class shim API for runtime authors to integrate with containerd. The shim API is minimal and scoped to the execution lifecycle of a container.
To learn how containerd's shim v2 runtime works in details, please refer to the documentation.
The containerd-shim-protos
crate provides Protobuf message
and TTRPC service definitions for the
Containerd shim v2 protocol.
The message and service definitions are auto-generated from protobuf source files under vendor/
by using ttrpc-codegen. So please do not
edit those auto-generated source files.
If upgrading/modification is needed, please follow the steps:
cargo build --features=generate_bindings
.Add containerd-shim-client
as a dependency in your Cargo.toml
[dependencies]
containerd-shim-protos = "0.4"
Basic client code looks as follows:
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");
The way to build the example:
# 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