containerd is built with OCI support and with support for advanced features provided by runc.
Development (-dev
) and pre-releases of containerd may depend features in runc
that have not yet been released, and may require a specific runc build. The version
of runc that is tested against in our CI can be found in the script/setup/runc-version
file, which may point to a git-commit (for pre releases) or tag in the runc
repository.
For regular (non-pre-)releases of containerd releases, we attempt to use released
(tagged) versions of runc. We recommend using a version of runc that's equal to
or higher than the version of runc described in script/setup/runc-version
.
If you encounter any runtime errors, make sure your runc is in sync with the commit or tag provided in that file.
For more information on how to clone and build runc also refer to the runc building documentation.
Before building runc you may need to install additional build dependencies, which
will vary by platform. For example, you may need to install libseccomp
e.g.
libseccomp-dev
for Ubuntu.
From within your opencontainers/runc
repository run:
make && sudo make install
Starting with runc 1.0.0-rc93, the "selinux" and "apparmor" buildtags have been
removed, and runc builds have SELinux, AppArmor, and seccomp support enabled
by default. Note that "seccomp" can be disabled by passing an empty BUILDTAGS
make variable, but is highly recommended to keep enabled.
By default, runc is compiled with kernel-memory limiting support enabled. This
functionality is deprecated in kernel 5.4 and up, and is known to be broken on
RHEL7 and CentOS 7 3.10 kernels. For these kernels, we recommend disabling kmem
support using the nokmem
build-tag. When doing so, be sure to set the seccomp
build-tag to enable seccomp support, for example:
make BUILDTAGS='nokmem seccomp' && make install
For details about the nokmem
build-tag, refer to the discussion on opencontainers/runc#2594.
For further details on building runc, refer to the build instructions in the runc README.