This topic discusses why VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) uses containerd as the default container runtime instead of Docker.
The containerd container runtime is a preferred container runtime for use with Kubernetes.
containerd was initially introduced with Docker v1.11 to simplify cloud architecture management. containerd has become a high-level container runtime that uses the Container Runtime Interface (CRI) created for Kubernetes. containerd is a Graduated project maturity level project within the Cloud Native Computing Foundation.
The Docker container runtime is complex, handling everything from building images and creating volumes to managing network plugins and overlay networks. In Kubernetes v1.20, the Kubernetes community deprecated Docker as an underlying runtime in favor of runtimes that use the CRI and will remove Docker support in Kubernetes v1.22.
containerd is now the default container runtime for newly created TKGI Kubernetes clusters due to the deprecation and anticipated removal of Docker runtime support in future Kubernetes releases.
containerd provides the following features and benefits:
As a high-level container runtime, containerd does not require Docker to run. It runs on its own, with runc as its low-level container runtime. For deploying and managing Kubernetes, containerd can replace Docker and Docker-shim with CRI-Containerd.
Containerd abstracts system calls and operating system-specific functionality to provide a simple container runtime that specializes in running images in containers, pushing and pulling images to the registry, and managing the images themselves. Because of these abstractions, containerd works with Linux and Windows both on-premise and in the cloud.
Containerd is compatible with other low-level runtimes besides runc, supports tools such as kata-runtime to run containers, and supports running multiple container runtimes within the same environment.
Containerd provides container lifecycle APIs to create, execute, and manage containers and their tasks, an entire API dedicated to snapshot management.