Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 44 additions & 3 deletions cmd/containerd-shim-urunc-v2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,53 @@ package main

import (
"context"
"io"
"os"
"sync"

"github.com/containerd/containerd/runtime/v2/runc/manager"
"github.com/containerd/containerd/runtime/v2/shim"
bootapi "github.com/containerd/containerd/api/runtime/bootstrap/v1"
"github.com/containerd/containerd/v2/cmd/containerd-shim-runc-v2/manager"
"github.com/containerd/containerd/v2/pkg/protobuf/proto"
"github.com/containerd/containerd/v2/pkg/shim"
_ "github.com/urunc-dev/urunc/pkg/containerd-shim"
)

func main() {
shim.RunManager(context.Background(), manager.NewShimManager("io.containerd.urunc.v2"))
var isStart bool
for _, arg := range os.Args {
if arg == "start" {
isStart = true
break
}
}

if isStart {
r, w, err := os.Pipe()
if err == nil {
oldStdout := os.Stdout
os.Stdout = w

var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
data, _ := io.ReadAll(r)
var result bootapi.BootstrapResult
if err := proto.Unmarshal(data, &result); err == nil && result.Address != "" {
oldStdout.WriteString(result.Address)
} else {
oldStdout.Write(data)
}
}()

shim.RunShim(context.Background(), manager.NewShimManager("io.containerd.urunc.v2"))

os.Stdout = oldStdout
w.Close()
wg.Wait()
return
}
}

shim.RunShim(context.Background(), manager.NewShimManager("io.containerd.urunc.v2"))
}
50 changes: 24 additions & 26 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
module github.com/urunc-dev/urunc

go 1.25.0
go 1.26.3

require (
github.com/BurntSushi/toml v1.6.0
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
github.com/cavaliergopher/cpio v1.0.1
github.com/containerd/containerd v1.7.30
github.com/containerd/containerd/api v1.10.0
github.com/containerd/containerd/api v1.11.1
github.com/containerd/containerd/v2 v2.3.1
github.com/containerd/errdefs/pkg v0.3.0
github.com/containerd/log v0.1.0
github.com/containerd/ttrpc v1.2.7
github.com/containerd/plugin v1.1.0
github.com/containerd/ttrpc v1.2.8
github.com/creack/pty v1.1.24
github.com/elastic/go-seccomp-bpf v1.6.0
github.com/hashicorp/go-version v1.9.0
Expand All @@ -21,7 +23,7 @@ require (
github.com/onsi/gomega v1.39.1
github.com/opencontainers/image-spec v1.1.1
github.com/opencontainers/runc v1.3.4
github.com/opencontainers/runtime-spec v1.2.1
github.com/opencontainers/runtime-spec v1.3.0
github.com/prometheus-community/pro-bing v0.8.0
github.com/rs/zerolog v1.35.1
github.com/sirupsen/logrus v1.9.4
Expand All @@ -30,27 +32,25 @@ require (
github.com/vishvananda/netlink v1.3.1
github.com/vishvananda/netns v0.0.5
golang.org/x/sys v0.43.0
google.golang.org/grpc v1.79.3
k8s.io/cri-api v0.35.4
google.golang.org/grpc v1.80.0
k8s.io/cri-api v0.36.0
)

require (
github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/Microsoft/hcsshim v0.13.0 // indirect
github.com/Microsoft/go-winio v0.6.3-0.20251027160822-ad3df93bed29 // indirect
github.com/Microsoft/hcsshim v0.15.0-rc.1 // indirect
github.com/cilium/ebpf v0.20.0 // indirect
github.com/containerd/cgroups/v3 v3.1.0 // indirect
github.com/containerd/cgroups/v3 v3.1.3 // indirect
github.com/containerd/console v1.0.5 // indirect
github.com/containerd/continuity v0.4.5 // indirect
github.com/containerd/continuity v0.5.0 // indirect
github.com/containerd/errdefs v1.0.0 // indirect
github.com/containerd/errdefs/pkg v0.3.0 // indirect
github.com/containerd/fifo v1.1.0 // indirect
github.com/containerd/go-runc v1.0.0 // indirect
github.com/containerd/platforms v0.2.1 // indirect
github.com/containerd/go-runc v1.1.0 // indirect
github.com/containerd/platforms v1.0.0-rc.4 // indirect
github.com/containerd/typeurl/v2 v2.2.3 // indirect
github.com/coreos/go-systemd/v22 v22.7.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/docker/go-events v0.0.0-20250808211157-605354379745 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
Expand All @@ -60,26 +60,24 @@ require (
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/klauspost/compress v1.18.3 // indirect
github.com/klauspost/compress v1.18.5 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mdlayher/socket v0.5.1 // indirect
github.com/mdlayher/vsock v1.2.1 // indirect
github.com/moby/sys/mountinfo v0.7.2 // indirect
github.com/moby/sys/sequential v0.6.0 // indirect
github.com/moby/sys/user v0.4.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/stretchr/objx v0.5.3 // indirect
go.opencensus.io v0.24.0 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/mod v0.32.0 // indirect
golang.org/x/net v0.49.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/text v0.33.0 // indirect
golang.org/x/tools v0.41.0 // indirect
google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect
google.golang.org/protobuf v1.36.11 // indirect
golang.org/x/mod v0.35.0 // indirect
golang.org/x/net v0.52.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/text v0.35.0 // indirect
golang.org/x/tools v0.43.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect
google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading