A Foray into the World of Containerd

Overview

After this move, Containerd can run as a daemon on Linux and Windows to manage the lifecycle of all containers on the machine. Alibaba Cloud, AWS, Google, IBM, and Microsoft, as initial members, will contribute to the project and provide maintenance personnel.

While Containerd may sound a little unfamiliar to many people, Docker announced this open-sourcing project with great fanfare. This announcement received an overwhelmingly positive response from the industry.

In fact, Docker 1.11 Docker Engine contained Containerd as early as March 2016. At that time, Containerd completely divested from the Docker Engine as an independent open-source project for independent development. The goal was to provide more open and stable infrastructure to run containers. Compared to its original version within the Docker Engine, the independent Containerd will have more functionalities to cover all management needs throughout the container runtime.

Containerd is not oriented to the end user directly but exists for integration into upper systems such as Swarm, Kubernetes, Mesos, and other container orchestration systems. Containerd runs on the system in the form of a daemon and exposes the low-layer gRPC APIs through the UNIX domain docket. Upper systems can manage containers on the machine through these APIs. Each Containerd is responsible for one machine. Containerd performs Image pulls, operations on containers (start, stop), networks, and storage. Specific running containers are the responsibility of runC. In fact, it comprehensively supports all OCI-compliant containers.

This is a step ahead for the community and the Docker ecosystem. For Docker community developers, the independent Containerd is simpler and clearer, and it is easier to add new features based on Containerd.

For the container orchestration service, runtime only requires Containerd + runC, which is more lightweight and easier to manage. The feature evolution of the independent Containerd can be separated from the Docker Engine to focus on the runtime container management, making it more stable. The future compatibility can be also be improved since it provides one year of support after the first official version of Containerd, 1.0 Release. It includes security updates and bug fixes, and a small version will be compatible with each upgrade.

To show its sincerity for the community and ecosystem, Docker specifically stressed the neutral status of Containerd, which is in line with the interests of all parties. The community envisions Containerd as an important component of the Docker platform. Alibaba Cloud, AWS, Google, IBM, and Microsoft will be involved in the development of Containerd.

To better understand the functionality and architecture of Containerd, let us explore it from a more detailed point of view.

Architecture

The image above is the Containerd architecture chart. The middle layer contains three subsystems where we see the capabilities that Containerd supports.

Distribution: The subsystem that interacts with Docker Registry to pull images.
Bundle: The subsystem that manages images on ephemeral disks.
Runtime: The subsystem that creates and manages containers.

We can see that container is clean and only provides features needed during the runtime.

Features and Route Map

The current version of Containerd is 0.2.4, a subset of features stripped from Docker Engine. When the updated features cover the previous list of features, the Containerd version updates to 1.0. It ensures API stability with the provision of one year of LTS.

Relationship between Containerd and Docker Engine

The APIs provided by Containerd are present on the bottom layer and not intended for direct use by general users, as general users can continue using Docker. Developers of the container orchestration system need Containerd, such as the Alibaba Cloud Container Service team.

Relationship between Containerd, OCI, and runC

From the technical stack perspective, the level of Containerd is higher than that of runC. Containerd can use runC to start the container, as well as to download the image and manage the network.

Relationship between Containerd and the Container Orchestration System

For cloud computing developers, it is very convenient to provide customized container networks, container storage and orchestration solutions based on Containerd.

Conclusion

Reference:

https://www.alibabacloud.com/blog/A-Foray-into-the-World-of-Containerd_p364322?spm=a2c41.11172391.0.0

--

--

Follow me to keep abreast with the latest technology news, industry insights, and developer trends. Alibaba Cloud website:https://www.alibabacloud.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alibaba Cloud

Follow me to keep abreast with the latest technology news, industry insights, and developer trends. Alibaba Cloud website:https://www.alibabacloud.com