diff --git a/pkg/wrappers/containerd.go b/pkg/wrappers/containerd.go index d3ffd1f16239948b680fb7c3ec96f92c3c4ee788..7b6474d16f9b0f927970892e9bd99c1a81e663df 100644 --- a/pkg/wrappers/containerd.go +++ b/pkg/wrappers/containerd.go @@ -2,6 +2,7 @@ package wrappers import ( "context" + "strings" "github.com/containerd/containerd/cmd/containerd/command" _ "github.com/containerd/containerd/diff/walking/plugin" @@ -11,6 +12,7 @@ import ( _ "github.com/containerd/containerd/metadata/plugin" _ "github.com/containerd/containerd/metrics/cgroups" _ "github.com/containerd/containerd/pkg/cri" + "github.com/containerd/containerd/plugin" _ "github.com/containerd/containerd/runtime/restart/monitor" _ "github.com/containerd/containerd/runtime/v2" _ "github.com/containerd/containerd/runtime/v2/runc/options" @@ -34,8 +36,15 @@ import ( func Containerd(ctx context.Context, args []string) (context.Context, error) { app := command.App() args = append([]string{"containerd"}, args...) - newCtx, cancel := context.WithCancel(ctx) + // Disable ttrpc plugins when running the main server + // These are registered by there init() because we build a single binary with + // both containerd and its shim + plugins := plugin.Graph(func(*plugin.Registration) bool { return false }) + for _, plug := range plugins { + plug.Disable = strings.HasPrefix(plug.URI(), "io.containerd.ttrpc") + } + newCtx, cancel := context.WithCancel(ctx) go func() { app.Run(args) cancel()