当前位置:网站首页>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
边栏推荐
- 一文带你了解BI的前世今身与企业数字化转型的关系
- Web components series (VII) -- life cycle of custom components
- [move pictures up, down, left and right through the keyboard in JS]
- Excuse me, my request is a condition update, but it is blocked in the buffer. In this case, can I only flush the cache every time?
- Rust区块琏开发——签名加密与私钥公钥
- UI自動化測試從此告別手動下載瀏覽器驅動
- Deflocculant aminoiodotide eye drops
- 线程基础知识
- Easy processing of ten-year futures and stock market data -- Application of tdengine in Tongxinyuan fund
- ABP vNext microservice architecture detailed tutorial - distributed permission framework (Part 1)
猜你喜欢
我就一写代码的,王总整天和我谈格局...
Why do some programmers change careers before they are 30?
laravel8 导出Excle文件
[web source code code code audit method] audit skills and tools
ABP vNext microservice architecture detailed tutorial - distributed permission framework (Part 2)
输入的查询SQL语句,是如何执行的?
JWT vulnerability recurrence
ActiveReportsJS 3.1 VS ActiveReportsJS 3.0
Basic knowledge of tuples
Resolved (sqlalchemy+pandas.read_sql) attributeerror: 'engine' object has no attribute 'execution_ options‘
随机推荐
优先使用对象组合,而不是类继承
【做题打卡】集成每日5题分享(第三期)
Blue Bridge Cup single chip microcomputer -- PWM pulse width modulation
ActiveReportsJS 3.1 VS ActiveReportsJS 3.0
[an Xun cup 2019] not file upload
[web Audit - source code disclosure] obtain source code methods and use tools
How rem is used
Analysis of glibc strlen implementation mode
About the recent experience of writing questions
[groovy] string (string splicing | multi line string)
Anti debugging (basic principles of debugger Design & NT NP and other anti debugging principles)
speed or tempo in classical music
Clickhouse物化视图
Multimedia query
Why is there a reincarnation of 60 years instead of 120 years in the tiangan dizhi chronology
[wp][入门]刷弱类型题目
New interesting test applet source code_ Test available
Deep learning - LSTM Foundation
MindFusion. Virtual Keyboard for WPF
Resolved (sqlalchemy+pandas.read_sql) attributeerror: 'engine' object has no attribute 'execution_ options‘