当前位置:网站首页>Containerd series - what is containerd?
Containerd series - what is containerd?
2022-07-05 03:55:00 【PinkGranite】
This article will be about containerd To introduce
Reference resources :
Introduction to containerd - Phil Estes, IBM $ Derek McGowan, Docker
Catalog
1. What is? containerd?
- containerd It's a “container runtime”: What is? container runtime?runtime It refers to the container runtime , in other words containerd Given container runtime support . But it should be noted that :containerd It is not a real runtime , It has the ability of runtime to some extent ( Mainly due to its downstream runtime Support ). As can be seen from the above figure ,containerd It undertakes the functions of higher-level container management ( for example Docker,K8S), The lower layer is equipped with a lower level runtime( for example runc wait —— About runc You can refer to Series articles ).
- containerd Is a resource manager (resource manager):containerd You can manage the lifecycle of containers , Involving the creation of containers 、 Delete and so on ; Images can be managed ; You can manage file system snapshots ; You can manage the meta information and dependent information of the container .
- containerd It is a tightly coupled project (tightly scoped):containerd Ben's body size is very much , Many functions are built on the extension system .
2. containerd The history of
- Original containerd It's just Docker A companion application running , As the connection docker And the ground floor runc Middleware
- With continuous development ,containerd Gradually from a container supervisor( That is, it only has basic container detection and execution functions ) Degenerate into a fully functional container runtime( The whole process )
- although containerd The birth and docker Interwovenness , however containerd Designed a new container and image management interface
- CRI As a plug-in independent of container process, it has been integrated into containerd in , send containerd Be in line with CRI Standard container runtime
3. Why use containerd?
- K8S Users :K8S At present, it is the most widely used container management project in industrial applications , and K8S Yes containerd With considerable and good support ,containerd stay K8S Is also the most mature .
- For developers : If you are a developer , Use docker kit Do image development , Then you have used it in real time containerd,docker Itself is also right containerd Supported
- Edge development : If you are a developer of edge applications ,containerd Due to the small volume , The advantages of high efficiency are widely used in edge virtualization scenes , for example K3S( It can be understood as K8S A smaller version of , Applicable to edge scenes , Please take a look at the exam here )
- For service providers :containerd It can well support external service access , Reference resources faasd,IBM Cloud Function etc.
- Program stability :containerd Of daemon Even if it collapses, it will not affect the running containers and programs
- Efficient use of resources :containerd daemon The memory space and resources required are very small ( So it also applies to edge scenes )
- File system resource management :contianerd Provides a garbage collection mechanism , For redundant and unused file system resources ,containerd It can be recycled automatically , Reduce the invalid occupation of file system resources
4. containerd Architecture (containerd1.4.x)
4.1 The overall structure
- overall contianerd from Client、API、Core、Backend( Or you could say API、Core、Backend It's a whole , by containerd core)、Shim It consists of five parts , Build on the system and image warehouse
- Control information and data from Client Flow right , Know the container runtime shim
4.2 Client
- Client It's user use containerd Direct interaction objects in the process , about containerd For beginners ,Client It is the module that should be introduced first , It provides rich functions and flexibility for exploring new features and extensions
- Container Management The sub modules are Client Module with container runtimes Sub modules for interaction : This sub module can provide OCI specification establish ,snapshot Creation and other functions
- Image Distribution yes Client The sub module of image management in , Provides image import , export , Pull , Push and other functions
- containerd The project tries to keep core Part of the concise refinement , therefore Client Part also undertakes more functions and requirements accordingly
- Client The module can be self configured —— It means Client Very flexible
4.3 containerd core(API、Core、Backend)
- This section defines containerd The types of data structures used in and API Interface
- Why? containerd To provide so many interfaces ( whether containerd Too dependent on the use of interfaces )?—— In fact, these interfaces and data types are set for containerd core Become an intermediate station for data information forwarding , Based on the definition of data structure type ,core It can track the data passing through this part for better use
- Data from core Part of it flows through and is core Track and record , That means core part ( And some of them plugins) No need to store data —— It's also convenient core Medium GC Modules work , Reduce the risk of challenges such as data inconsistency
- Yes Plugin The support of containerd core An important feature of , This makes containerd It has good scalability and flexibility
- plugin Can be like core Send a message ,core You can also ask plugin Send a message ,backend It is also pluggable (
plugable
)—— for example core Medium Snapshots That is to say plugin The way to achieve - Each plug-in can be self configured , These configurations will also be included containerd In the main configuration of
- If we have a service application , So it can also be done through grpc Way and core Interact —— for example core Medium CRI The module itself exists as a service , adopt grpc Way and core Interact
- By default Client Will pass proxy Service opportunities grpc And core Interact
4.4 Shim
- containerd core Medium Runtime The sub module can start a new runtime shim, It can pass oci spec And other control information to Shim
- Shims Is really owned container processes The role of control ,Shim As container The direct parent process of exists (
I don't know whether it's right here
) - containerd core Through a lightweight grpc protocal ttrpc And Shim Interact ; If you restart containerd, that containerd Need to reconnect with shim Establish a connection to pass instructions and data
- There are already many different Shim Realization , One of the most widely used is runc
- runhcs Is running on the windows Upper Shim
边栏推荐
- 【刷题】BFS题目精选
- 英语必备词汇3400
- JWT vulnerability recurrence
- MindFusion. Virtual Keyboard for WPF
- In MySQL Association query, the foreign key is null. What if the data cannot be found?
- 测试开发是什么?为什么现在那么多公司都要招聘测试开发?
- About authentication services (front and back, login, registration and exit, permission management)
- Delphi read / write JSON format
- Yuancosmic ecological panorama [2022 latest]
- Thread Basics
猜你喜欢
PlasticSCM 企业版Crack
JWT vulnerability recurrence
[array]566 Reshape the matrix - simple
[positioning in JS]
IronXL for .NET 2022.6
Deep learning - LSTM Foundation
Redis source code analysis: redis cluster
UI automation test farewell to manual download of browser driver
Resolved (sqlalchemy+pandas.read_sql) attributeerror: 'engine' object has no attribute 'execution_ options‘
laravel8 导出Excle文件
随机推荐
CTF stegano practice stegano 9
【软件逆向-分析工具】反汇编和反编译工具
ActiveReportsJS 3.1 VS ActiveReportsJS 3.0
UI automation test farewell to manual download of browser driver
线程基础知识
一文带你了解BI的前世今身与企业数字化转型的关系
阿里云ECS使用cloudfs4oss挂载OSS
Unity implements the code of the attacked white flash (including shader)
Clickhouse同步mysql(基于物化引擎)
英语必备词汇3400
[groovy] string (string splicing | multi line string)
[untitled]
Subversive cognition: what does SRE do?
【看完就懂系列】一文6000字教你从0到1实现接口自动化
laravel8 导出Excle文件
为什么百度、阿里这些大厂宁愿花25K招聘应届生,也不愿涨薪5K留住老员工?
Nmap使用手册学习记录
深度学习——LSTM基础
Zero foundation uses paddlepaddle to build lenet-5 network
Kubernetes - identity and authority authentication