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 message and service definitions are auto-generated from protobuf source files under
by using ttrpc-codegen. So please do not
edit those auto-generated source files.
If upgrading/modification is needed, please follow the steps:
- Synchronize the latest protobuf source files from the upstream projects into directory ‘vendor/’.
- Re-generate the source files by
cargo build --features=generate_bindings.
- Commit the synchronized protobuf source files and auto-generated source files, keeping them in synchronization.
Here is a quick example how to use the crate:
use containerd_shim_protos as client; use client::api; use client::ttrpc::context::Context; // Create TTRPC client let client = client::Client::connect("unix:///socket.sock").unwrap(); // Get task client let task_client = client::TaskClient::new(client); let context = Context::default(); // Send request and receive response let request = api::ConnectRequest::default(); let response = task_client.connect(Context::default(), &request);