Open-Source Wikis

/

containerd

/

Reference

/

Dependencies

containerd/containerd

Dependencies

External Go modules containerd depends on. Counts and version pins reflect the state of go.mod at the time of this wiki.

Direct dependencies — the load-bearing ones

Module What it does in containerd
github.com/Microsoft/hcsshim Windows host compute system — required for Windows containers
github.com/Microsoft/go-winio Windows IO and named pipe helpers
github.com/checkpoint-restore/checkpointctl / go-criu criu integration for checkpoint/restore
github.com/containerd/btrfs/v2 btrfs syscall wrappers
github.com/containerd/cgroups/v3 Cgroup v1 and v2 wrappers
github.com/containerd/console Pseudo-terminal helpers used by the shim
github.com/containerd/containerd/api Self-import of the api submodule
github.com/containerd/continuity Filesystem semantics helpers (used by pkg/archive)
github.com/containerd/errdefs Error sentinel definitions for cross-package error contracts
github.com/containerd/errdefs/pkg Error helpers
github.com/containerd/fifo Named pipe wrappers used for stdio
github.com/containerd/go-cni CNI client used by the CRI plugin
github.com/containerd/go-runc runc invocation library used by the shim
github.com/containerd/imgcrypt/v2 Encrypted image support
github.com/containerd/log logrus wrapper used everywhere
github.com/containerd/nri Node Resource Interface library
github.com/containerd/otelttrpc OpenTelemetry instrumentation for ttrpc
github.com/containerd/platforms OCI platform parsing
github.com/containerd/plugin The plugin registration framework
github.com/containerd/ttrpc ttrpc client/server (used for daemon↔shim)
github.com/containerd/typeurl/v2 Protobuf typeurl registry
github.com/containerd/zfs/v2 ZFS snapshotter dependency
github.com/containernetworking/cni / plugins CNI library and plugins
github.com/coreos/go-systemd/v22 systemd journal/socket integration
github.com/distribution/reference OCI reference parsing (image refs)
github.com/docker/go-events Event channel helpers
github.com/docker/go-metrics Prometheus metrics helpers (containerd-flavored)
github.com/docker/go-units Byte/duration humanizer used in ctr
github.com/erofs/go-erofs EROFS filesystem support
github.com/fsnotify/fsnotify Filesystem watcher (CNI conf syncer)
github.com/google/uuid UUIDs
github.com/intel/goresctrl Intel RDT support
github.com/klauspost/compress Faster gzip/zstd
github.com/moby/sys/* Mount, signal, symlink, sequential, userns helpers shared with Docker
github.com/opencontainers/image-spec OCI image-spec types
github.com/opencontainers/go-digest Digest type
github.com/opencontainers/runtime-spec OCI runtime-spec types
github.com/opencontainers/runtime-tools Runtime-spec helpers
github.com/opencontainers/selinux SELinux label helpers
github.com/pelletier/go-toml/v2 TOML config parser
github.com/prometheus/client_golang Prometheus client library
github.com/sirupsen/logrus Underlying logger
github.com/stretchr/testify Test assertions
github.com/urfave/cli/v2 CLI framework for containerd, ctr, etc.
github.com/vishvananda/netlink / netns Network namespace helpers
go.etcd.io/bbolt Embedded key/value store for the metadata plugin
go.opentelemetry.io/otel (and several exporters/contrib packages) Tracing
google.golang.org/grpc gRPC server and client
google.golang.org/protobuf Protobuf runtime
k8s.io/cri-api, cri-client, cri-streaming CRI gRPC types
k8s.io/apimachinery, client-go, klog/v2, streaming, utils Kubernetes plumbing used by the CRI plugin
tags.cncf.io/container-device-interface CDI device specs (GPUs, FPGAs)

Indirect-only highlights

Module Notes
github.com/cilium/ebpf Pulled in transitively for cgroup v2 and Intel RDT bits
github.com/containers/ocicrypt Used by imgcrypt
github.com/sasha-s/go-deadlock Deadlock detector available behind a build tag
github.com/tetratelabs/wazero WASM runtime pulled in by knqyf263/go-plugin

Why these specifically

  • The containerd/* family of packages is split out so they can be reused by sister projects (nerdctl, the containerd-nri family, etc.) without a circular dependency.
  • Microsoft's hcsshim and go-winio are required to do anything meaningful with Windows containers.
  • bbolt is the only persistent store; all other storage is the content store on disk.
  • urfave/cli/v2 powers every CLI in the repo. It's pinned because of breaking changes between v2 minor versions.
  • The Kubernetes packages are pinned to a recent major and minor; updates are coordinated in CRI-tied PRs.

Vendoring

containerd is fully vendored under vendor/. Updating dependencies requires make vendor followed by review of go.mod/go.sum/vendor/ deltas. CI gates the change via make verify-vendor.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Dependencies – containerd wiki | Factory