|  |
|  |
| |
| [](https://pkg.go.dev/github.com/containerd/containerd/v2) |
| [](https://github.com/containerd/containerd/actions?query=workflow%3ACI+event%3Amerge_group) |
| [](https://github.com/containerd/containerd/actions?query=workflow%3ANightly) |
| [](https://goreportcard.com/report/github.com/containerd/containerd/v2) |
| [](https://bestpractices.coreinfrastructure.org/projects/1271) |
| [](https://scorecard.dev/viewer/?uri=github.com/containerd/containerd) |
| [](https://github.com/containerd/containerd/actions/workflows/links.yml) |
| |
| containerd is an industry-standard container runtime with an emphasis on simplicity, robustness, and portability. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc. |
| |
| containerd is a member of CNCF with ['graduated'](https://landscape.cncf.io/?selected=containerd) status. |
| |
| containerd is designed to be embedded into a larger system, rather than being used directly by developers or end-users. |
| |
|  |
| |
| ## Announcements |
| |
| ### containerd v2.0 is now released! |
| See [`docs/containerd-2.0.md`](docs/containerd-2.0.md). |
| |
| ### Now Recruiting |
| |
| We are a large inclusive OSS project that is welcoming help of any kind shape or form: |
| * Documentation help is needed to make the product easier to consume and extend. |
| * We need OSS community outreach/organizing help to get the word out; manage |
| and create messaging and educational content; and help with social media, community forums/groups, and google groups. |
| * We are actively inviting new [security advisors](https://github.com/containerd/project/blob/main/GOVERNANCE.md#security-advisors) to join the team. |
| * New subprojects are being created, core and non-core that could use additional development help. |
| * Each of the [containerd projects](https://github.com/containerd) has a list of issues currently being worked on or that need help resolving. |
| - If the issue has not already been assigned to someone or has not made recent progress, and you are interested, please inquire. |
| - If you are interested in starting with a smaller/beginner-level issue, look for issues with an `exp/beginner` tag, for example [containerd/containerd beginner issues.](https://github.com/containerd/containerd/issues?q=is%3Aissue+is%3Aopen+label%3Aexp%2Fbeginner) |
| |
| ## Getting Started |
| |
| See our documentation on [containerd.io](https://containerd.io): |
| * [for ops and admins](docs/ops.md) |
| * [namespaces](docs/namespaces.md) |
| * [client options](docs/client-opts.md) |
| |
| To get started contributing to containerd, see [CONTRIBUTING](CONTRIBUTING.md). |
| |
| If you are interested in trying out containerd see our example at [Getting Started](docs/getting-started.md). |
| |
| ## Nightly builds |
| |
| There are nightly builds available for download [here](https://github.com/containerd/containerd/actions?query=workflow%3ANightly). |
| Binaries are generated from `main` branch every night for `Linux` and `Windows`. |
| |
| Please be aware: nightly builds might have critical bugs, it's not recommended for use in production and no support provided. |
| |
| ## Kubernetes (k8s) CI Dashboard Group |
| |
| The [k8s CI dashboard group for containerd](https://testgrid.k8s.io/containerd) contains test results regarding |
| the health of kubernetes when run against main and a number of containerd release branches. |
| |
| - [containerd-periodics](https://testgrid.k8s.io/containerd-periodic) |
| |
| ## Runtime Requirements |
| |
| Runtime requirements for containerd are very minimal. Most interactions with |
| the Linux and Windows container feature sets are handled via [runc](https://github.com/opencontainers/runc) and/or |
| OS-specific libraries (e.g. [hcsshim](https://github.com/Microsoft/hcsshim) for Microsoft). |
| The current required version of `runc` is described in [RUNC.md](docs/RUNC.md). |
| |
| There are specific features |
| used by containerd core code and snapshotters that will require a minimum kernel |
| version on Linux. With the understood caveat of distro kernel versioning, a |
| reasonable starting point for Linux is a minimum 4.x kernel version. |
| |
| The overlay filesystem snapshotter, used by default, uses features that were |
| finalized in the 4.x kernel series. If you choose to use btrfs, there may |
| be more flexibility in kernel version (minimum recommended is 3.18), but will |
| require the btrfs kernel module and btrfs tools to be installed on your Linux |
| distribution. |
| |
| To use Linux checkpoint and restore features, you will need `criu` installed on |
| your system. See more details in [Checkpoint and Restore](#checkpoint-and-restore). |
| |
| Build requirements for developers are listed in [BUILDING](BUILDING.md). |
| |
| |
| ## Supported Registries |
| |
| Any registry which is compliant with the [OCI Distribution Specification](https://github.com/opencontainers/distribution-spec) |
| is supported by containerd. |
| |
| For configuring registries, see [registry host configuration documentation](docs/hosts.md) |
| |
| ## Features |
| |
| For a detailed overview of containerd's core concepts and the features it supports, |
| please refer to the [FEATURES.MD](./docs/features.md) document. |
| |
| ### Releases and API Stability |
| |
| Please see [RELEASES.md](RELEASES.md) for details on versioning and stability |
| of containerd components. |
| |
| Downloadable 64-bit Intel/AMD binaries of all official releases are available on |
| our [releases page](https://github.com/containerd/containerd/releases). |
| |
| For other architectures and distribution support, you will find that many |
| Linux distributions package their own containerd and provide it across several |
| architectures, such as [Canonical's Ubuntu packaging](https://launchpad.net/ubuntu/bionic/+package/containerd). |
| |
| #### Enabling command auto-completion |
| |
| Starting with containerd 1.4, the urfave client feature for auto-creation of bash and zsh |
| autocompletion data is enabled. To use the autocomplete feature in a bash shell for example, source |
| the autocomplete/ctr file in your `.bashrc`, or manually like: |
| |
| ``` |
| $ source ./contrib/autocomplete/ctr |
| ``` |
| |
| #### Distribution of `ctr` autocomplete for bash and zsh |
| |
| For bash, copy the `contrib/autocomplete/ctr` script into |
| `/etc/bash_completion.d/` and rename it to `ctr`. The `zsh_autocomplete` |
| file is also available and can be used similarly for zsh users. |
| |
| Provide documentation to users to `source` this file into their shell if |
| you don't place the autocomplete file in a location where it is automatically |
| loaded for the user's shell environment. |
| |
| ### CRI |
| |
| `cri` is a [containerd](https://containerd.io/) plugin implementation of the Kubernetes [container runtime interface (CRI)](https://github.com/kubernetes/cri-api/blob/master/pkg/apis/runtime/v1/api.proto). With it, you are able to use containerd as the container runtime for a Kubernetes cluster. |
| |
|  |
| |
| #### CRI Status |
| |
| `cri` is a native plugin of containerd. Since containerd 1.1, the cri plugin is built into the release binaries and enabled by default. |
| |
| The `cri` plugin has reached GA status, representing that it is: |
| * Feature complete |
| * Works with Kubernetes 1.10 and above |
| * Passes all [CRI validation tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/cri-validation.md). |
| * Passes all [node e2e tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/e2e-node-tests.md). |
| * Passes all [e2e tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-testing/e2e-tests.md). |
| |
| See results on the containerd k8s [test dashboard](https://testgrid.k8s.io/containerd) |
| |
| #### Validating Your `cri` Setup |
| A Kubernetes incubator project, [cri-tools](https://github.com/kubernetes-sigs/cri-tools), includes programs for exercising CRI implementations. More importantly, cri-tools includes the program `critest` which is used for running [CRI Validation Testing](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/cri-validation.md). |
| |
| #### CRI Guides |
| * [Installing with Ansible and Kubeadm](contrib/ansible/README.md) |
| * [For Non-Ansible Users, Preforming a Custom Installation Using the Release Tarball and Kubeadm](docs/getting-started.md) |
| * [CRI Plugin Testing Guide](./docs/cri/testing.md) |
| * [Debugging Pods, Containers, and Images with `crictl`](./docs/cri/crictl.md) |
| * [Configuring `cri` Plugins](./docs/cri/config.md) |
| * [Configuring containerd](https://github.com/containerd/containerd/blob/main/docs/man/containerd-config.8.md) |
| |
| ### Communication |
| |
| For async communication and long-running discussions please use issues and pull requests on the GitHub repo. |
| This will be the best place to discuss design and implementation. |
| |
| For sync communication catch us in the `#containerd` and `#containerd-dev` Slack channels on Cloud Native Computing Foundation's (CNCF) Slack - `cloud-native.slack.com`. Everyone is welcome to join and chat. [Get Invite to CNCF Slack.](https://slack.cncf.io) |
| |
| Join our next community meeting hosted on Zoom. The schedule is posted on the [CNCF Calendar](https://www.cncf.io/calendar/) (search 'containerd' to filter). |
| |
| ### Security audit |
| |
| Security audits for the containerd project are hosted on our website. Please see the [security page at containerd.io](https://containerd.io/security/) for more information. |
| |
| ### Reporting security issues |
| |
| Please follow the instructions at [containerd/project](https://github.com/containerd/project/blob/main/SECURITY.md#reporting-a-vulnerability) |
| |
| ## Licenses |
| |
| The containerd codebase is released under the [Apache 2.0 license](LICENSE). |
| The README.md file and files in the "docs" folder are licensed under the |
| Creative Commons Attribution 4.0 International License. You may obtain a |
| copy of the license, titled CC-BY-4.0, at http://creativecommons.org/licenses/by/4.0/. |
| |
| ## Project details |
| |
| **containerd** is the primary open source project within the broader containerd GitHub organization. |
| However, all projects within the repo have common maintainership, governance, and contributing |
| guidelines which are stored in a `project` repository commonly for all containerd projects. |
| |
| Please find all these core project documents, including the: |
| * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md), |
| * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS), |
| * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md) |
| |
| information in our [`containerd/project`](https://github.com/containerd/project) repository. |
| |
| ## Adoption |
| |
| Interested to see who is using containerd? Are you using containerd in a project? |
| Please add yourself via pull request to our [ADOPTERS.md](./ADOPTERS.md) file. |