

#WHAT IS KUBERNETES CONTAINER SOFTWARE#
Other software projects can use this to run containers and manage container images. Containerd – An abstraction of kernel features that provides a relatively high level container interface.It now uses containerd as its container runtime. Docker – A developer-oriented software with a high level interface that lets you easily build and run containers from your terminal.Here’s a summary of how the three technologies combine: By breaking containerd out of Docker, a third alternative became available: use containerd as a system abstraction layer, without involving Docker. Previously, Kubernetes development was left with two bad options: keep writing shims around the hefty Docker interface, or start interacting with Linux kernel features directly. This might be developer-oriented software, like Docker, or cloud-oriented devops tools such as Kubernetes. It’s intended as a “client layer” that container software then builds atop of. The steps vary by platform and distribution.Ĭontainerd drops in to abstract this low-level wiring. In order to run a container, you need to use syscalls to set up the containerised environment. Containers are really an abstraction over various Linux kernel features. To fully understand containerd, it’s necessary to look at the nature of containers. The OCI standardisation of container technologies means other runtimes can be used too. Instead of actually using Docker, they now have a more accessible interface to the container runtime. The emergence of containerd makes it easier for projects like Kubernetes to access the low-level “Docker” elements they need. Containerd was donated to the Cloud Native Computing Foundation (CNCF) in order to provide the container community with a basis for creating new container solutions. This includes Docker’s functionality for executing containers, handling low-level storage and managing image transfers. This resulted in an OCI specification defining a container which could be used by multiple runtimes, of which Docker is an example.ĭocker then extracted its container runtime out into a new project, containerd. At the same time, the Open Container Initiative (OCI) began standardising container formats and runtimes.

The Rise of ContainerdĪs Kubernetes grew and more third-party tools arose around Docker, the limitations of its architecture became clear. Docker launched Swarm, its own Kubernetes alternative, offering orchestration as a built-in Docker “mode”. The issues were compounded by the differing directions in which Docker and Kubernetes were headed. It had to bypass the human-friendly aspects of the project using a dedicated tool, Dockershim. It used Docker directly to interact with containers, even though it only needed a subset of functionality – the parts responsible for actually running containers.ĭocker’s developer-centric UI got in the way of Kubernetes. Back in those early days, Kubernetes was inextricably linked to Docker.
