rust-extensions/crates/shim-protos
Fabiano Fidêncio cfd185006b Bump shim proto to 0.10.0
There was no change here, but we're bumping to keep the version the same
as the shim (which will be released soon enough).

Signed-off-by: Fabiano Fidêncio <fidencio@northflank.com>
2025-07-18 21:44:27 +00:00
..
examples chore: Bump ttrpc-codegen as well 2025-06-11 00:13:54 +00:00
src Add info for get runtimeinfo 2025-01-27 20:06:12 +00:00
tests chore: Bump ttrpc-codegen as well 2025-06-11 00:13:54 +00:00
vendor Add info for get runtimeinfo 2025-01-27 20:06:12 +00:00
Cargo.toml Bump shim proto to 0.10.0 2025-07-18 21:44:27 +00:00
README.md docs: fix broken links 2024-05-29 23:33:58 +00:00
build.rs Add info for get runtimeinfo 2025-01-27 20:06:12 +00:00
rsync.txt Add update vendor script 2024-02-22 17:49:39 +00:00

README.md

Shim protos and client for containerd

Crates.io docs.rs Crates.io CI

containerd-shim-protos contains TTRPC bindings and client/server code to interact with containerd's runtime v2 shims.

Runtime

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.

Design

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:

  • 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.

Usage

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");

Example

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