Containerd详解

news2024/9/21 10:35:30

一.Containerd概述

1.什么是Containerd

           Containerd (container Daemon)是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由Docker开发团队创建的,并在后来成为一个独立的项目,被纳入了Cloud Native Computing Foundation(CNCF)的孵化项目中。

以下是containerd的主要特点和功能:

  1. 容器生命周期管理:containerd管理容器的生命周期,包括容器的创建、运行、暂停、恢复、停止和销毁等操作。
  2. 标准化接口:containerd提供了一个标准化的容器运行时接口,使得它可以与多个容器编排系统和工具集成,例如Kubernetes、Docker Compose等。
  3. 镜像管理:它支持容器镜像的拉取、推送、保存和加载等操作。containerd使用OCI (Open container Initiative)规范定义容器镜像的格式。
  4. 插件体系结构:containerd具有可扩展的插件体系结构,允许用户通过插件来扩展其功能,例如存储驱动、网络插件等。
  5. 跨平台支持:containerd可以在不同的操作系统上运行,从而提供了跨平台的支持。
  6. 与Kubernetes集成:Containerd作为Kubernetes的默认容器运行时,与Kubernetes紧密集成,为容器工作负载的管理提供了良好的支持。
  7. 安全性和隔离:containerd实现了严格的容器隔离和安全性措施,确保容器之间的隔离性以及对主机系统的安全性。

2.Containerd的起源与背景

        containerd的起源可以追溯到Docker项目。Docker最初作为一个开源项目推出,旨在简化应用程序的打包、分发和部署过程。Docker引入了容器的概念,将应用程序和其依赖项打包到一个容器中,使得应用在不同环境中可以一致地运行。

        随着Docker的发展,其架构逐渐变得复杂,包含了许多功能,如镜像构建、服务编排等。为了更好地组织和管理这些功能,Docker团队决定将Docker引擎拆分成多个组件,其中一个关键的组件就是 Containerdo

Docker架构拆分:Docker从单一的大型引擎拆分为一系列小型、可复用的组件。这种拆分的目标是提高可维护性、模块化和可扩展性。

containerd作为核心运行时:在Docker架构拆分后,containerd被定位为Docker的核心容器运行时。它负责管理容器的生命周期、镜像操作和基本运行时功能。

贡献给CNCF:为了推动containerd的发展,Docker团队将containerd的代码捐赠给了 Cloud Native Computing Foundation (CNCF),使其成为CNCF的孵化项目。

容器生态系统的标准化:containerd的设计遵循Open container Initiative(开放容器倡议 OCI)规范,这是一个关注容器运行时和镜像格式标准化的开放标准组织。这意味着containerd可以与符合OCI规范的其他容器工具和运行时进行互操作。

独立的容器运行时:containerd不仅仅局限于Docker,它可以作为独立的容器运行时,与多个容器编排系统和工具集成,从而为用户提供更多选择。

总体而言,containerd的起源是为了简化容器运行时的管理,并为容器生态系统提供一个开放、标准化的基础。其发展不仅服务于Docker生态系统,还为整个容器领域提供了一个通用的、可扩展的容器运行时。

3.核心组件解析

(1)storage(存储)

content(内容)

功能:content存储了容器镜像的实际数据。这包括文件系统层和元数据,用于创建和管理容器的基础文件系统。

Snapshot(快照)

功能. snapshot存储容器的快照数据。每个容器都可以有一个或多个快照,允许它们共享相同的文件系统层,提高效率。

Diff(差异)

功能:Diff存储容器文件系统层之间的差异。当容器运行时需要修改文件系统时,会在己有的文件系统层上创建一个差异层,以保存变更。

(2)Metadata(元数据)

Images(镜像)

功能:Images存储容器镜像的元数据,包括镜像的标签、大小、创建时间等信息。Metadata中的Images 组件允许容器对镜像进行管理和操作。

Containers(容器)

功能:containers存储容器的元数据,包括容器的状态、配置信息、网络设置等。这部分元数据使得容器能够有效地管理容器的生命周期。

(3)Runtime(运行时)

Tasks(任务)

Tasks包含容器内的进程组。每个容器运行时都有关联的Task,它负责管理容器内的所有进程。

Tasks与Shim一起工作,维护容器的状态。

Events(事件)

功能. Events组件记录了容器的各种事件,如容器的创建、启动、停止等。这些事件可以用于监控和日志记录,帮助用户了解容器系统的运行状况。

二.Containerd基本操作

1.镜像类操作

(1)拉取镜像

[root@localhost ~] ctr images pull hub.atomgit. com/amd64/nginx: 1.25.2-perl

(2)查看镜像

[root@localhost ~] ctr images ls

(3)监测本地镜像

[root@localhost ~] ctr images check

(4)重新打标签

[root@localhost ~] ctr images tag 原镜像名 新镜像名

(5)删除镜像


[root@localhost ~] ctr images rm 镜像名

(6)挂载镜像到主机目录


ctr images mount 镜像名:TAG 要挂载的目录/挂载点

(7)取消挂载


ctr images unmount 挂载点

(8)导出镜像


ctr images export --all-platforms 导出后的文件名 镜像名

(9)导入镜像


ctr images import  文件名   

2.容器类操作


(1)创建容器


ctr containers create 镜像名 容器名

(2)查看容器的详细信息


ctr containers info 容器名

(3)删除容器


ctr containers rm 容器名


3.任务类操作
 

  (1)启动容器任务

ctr task start -d  镜像名

(2)查看容器任务


ctr task ls

(3)进入容器里面      


ctr task exec --extc-id 0 -t nginx sh     //--exec-id 可以随便写不重复即可

(4)暂停容器任务


ctr task pause 容器名

(5)恢复容器


ctr task resume 容器名

(6)杀死容器任务


ctr task kill 容器名

(7)删除容器任务


ctr task rm 容器名


//虽然已经删除了任务,但是在创建任务时,也创建了一个同名的快照,即便已经删除了任务也可使用“ctr task start -d 容器名”命令,利用此快照将已删除的任务启动起来,使得此容器恢复运行


 

(8)获取容器的内存、CPU和PID的限额与使用量


ctr task metrics 容器名

(9)查看所有进程在宿主机的PID


ctr task ps 容器名


(10)列出当前所有插件


ctr plugins ls


(11)查看所有命名空间


ctr ns ls

(12)创建命名空间


ctr ns create 命名空间名称

(13)删除命名空间


ctr ns rm 命名空间名称

在操作时通过-n来指定命名空间,不指定则在默认命名空间default中操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

播放视频时黑屏无报错或报错“播放失败,请检查设备及客户端网络”

播放视频时黑屏无报错或报错“播放失败,请检查设备及客户端网络”或该如何解决? 请先使用排障工具排查,获得具体错误码,排障工具操作文档详见: 播放失败自助排障及常见错误码解决方案 - 播放问题 - 萤石社区 - Powered…

Linux下查看各进程的swap

cat /etc/re*se Red Hat Enterprise Linux Server release 6.8 (Santiago) 简单的可以通过top命令查看 top 后 按 f 进入选择列界面 按 p 就会输出swap信息(变为P) 回车返回看到SWAP信息了 再按 F 再按p 按swap排序 再回车后就是各进程按swap排序…

工厂数据采集设备的革新与应用-天拓四方

随着工业4.0和智能制造的快速发展,工厂数据采集设备已成为现代制造业不可或缺的重要组成部分。这些设备不仅提高了生产效率,还通过精准的数据分析为企业的决策提供了有力支持。本文将深入探讨工厂数据采集设备的革新、应用及其在实际操作中的重要性。 一…

论文利器 | 6款论文自动生成免费含摘要文献综述

在学术写作中,选择合适的工具和软件可以大大提高写作效率和质量。本文将重点介绍一款备受推荐的AI原创论文写作平台——千笔-AIPassPaPer,并详细分析其功能和优势。 千笔-AIPassPaPer简介 千笔-AIPassPaPer是一款功能全面且高效的AI原创论文写作平台&a…

注意力机制篇 | YOLOv8改进之引入NAMAttention注意力机制 | 基于标准化的注意力模块

前言:Hello大家好,我是小哥谈。本文提出一种基于归一化的注意力模块(NAM),可以降低不太显著的特征的权重,这种方式在注意力模块上应用了稀疏的权重惩罚,这使得这些权重在计算上更加高效,同时能够保持同样的性能。我们在ResNet和MobileNet上和其他的注意力方式进行了对比…

基于springboot的乐享田园系统

TOC springboot181基于springboot的乐享田园系统 第1章 绪论** 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不…

线程的退出、资源回收,互斥锁

创建多个线程,用循环的方式: 一、线程结束方式 1、pthread_exit(void *) 2、pthread_return 3、pthread_cancle:异常退出,无法获得退出状态,只能回收资源。 程序实例: 二、线程资…

异构数据同步 datax (1)

阿里实现异构数据库之间的表数据集同步 Reader & Framework & Writer job 当然好用的框架,自然有很多优点 1)可靠的数据质量监控 2) 丰富的数据转换功能 DataX作为一个服务于大数据的ETL工具,除了提供数据快照搬迁功能之外&#…

Gather在全球隐私保护领域的先锋地位

随着全球数字化进程的加速,隐私保护已成为各国政府、企业以及个人用户的共同关注点。近年来,频发的数据泄露事件和隐私侵害问题,让用户对安全通信和隐私保护的需求愈发强烈。据 IBM Security 统计,2024 年全球数据泄露的平均成本为…

C语言程序设计-[21] 字符串处理函数

C语言程序库中提供了一些专门处理字符串的函数: gets(字符数组); 输入一行字符序列到字符数组puts(字符串); 将字符串输出到终端strcat(字符数组1,字符串2); 字符串连接strcpy(字符数组1,字符串2); 复制字符串strcmp(字符串1, 字符串2); 两个字符串比较s…

【Kubernetes】k8s集群对外服务之Ingress

目录 一.Ingress 概述 1.什么是ingress 2.外部应用访问集群内部服务的方案 3.ingress 组成 4.ingress-Nginx 工作原理 二.部署 nginx-ingress-controller 方式一 方式二 三.总结 一.Ingress 概述 1.什么是ingress service的作用体现在两个方面,①对集群内…

AI初级教程-AI到底有什么样的具体价值

一、开头放重点 一个在国内好用且免费的AI工具,可以让自己的学习或者工作方面,事半功倍! 🔥世界主流大模型集聚地 免魔法 白玩GPT4 AI智能工作流 Codemoss_能用AI 传送门:https://www.nyai.chat/chat?inviteny…

第三方软件测试机构如何通过测试保障软件产品质量?

在当今数字化快速发展的时代,软件的质量直接影响至关重要的业务性能和用户体验。卓码软件测评作为一家专业的第三方软件测试机构,深知高质量软件对企业成功的重要性,那么是如何保障软件产品质量呢?主要有以下方式: 一…

具有重新参数化异构卷积的多分支辅助融合YOLO,用于精确的目标检测(MAF-YOLO)

中英文对照阅读https://yiyibooks.cn/arxiv/2407.04381v1/index.html 摘要 由于多尺度特征融合的有效性能,路径聚合 FPN (PAFPN) 被广泛应用于 YOLO 检测器中。 然而,它不能有效地、自适应地同时集成高层语义信息和低层空间信息。 我们在本文中提出了一…

Spring boot logback日志框架加载初始化源码

##LoggingApplicationListener监听 Overridepublic void onApplicationEvent(ApplicationEvent event) {if (event instanceof ApplicationStartingEvent) {onApplicationStartingEvent((ApplicationStartingEvent) event);}else if (event instanceof ApplicationEnvironment…

java中List列表转成子父集列表

一、前言 在Java中,如果你有一个表示父子关系的列表,并且想要把这个列表转成一个子父集list列表树目录,一般来说想要把list列表转成一个子父集列表,这个对象需要在属性中必须要有几个字段,id(节点id&#x…

机械行业数字化生产供应链产品解决方案(十二)

我们为机械行业提供的数字化生产供应链解决方案通过集成物联网、人工智能和大数据技术,打造了一套智能化的生产和供应链管理系统,实现了从设计、生产到物流的全程数字化、智能化。该系统通过实时数据采集与分析,优化生产计划和资源配置&#…

mybatis批量修改问题

update 表名称 set version version 1, update_time NOW(), basket_price case when id1130254 then 0.00 end, basket_spec_name case when id1130254 then “名称1” when id1130255 then “名称” end where id IN ( 1130254 , 1130255); 为什么 id为 1130255 的 baske…

Halcon 算子汇总

gen_tuple_const(1000,1.5) 生成一个长度为1000,里面每一个数组元素都为1.5的数组 gen_tuple_const(100,chr(ord(a) 1)) 生成一个长度为100,里面每一个数组元素都为b的数组 ord函数是库函数,用于获取字符的ASCII值 chr(ord(a) 1) 结…

算法设计与分析(快速幂算法

目录 1. 题目&#xff1a;2. 代码&#xff1a;2.1边界条件处理2.2分治策略2.3合并结果2.4递归终止条件2.5效率分析 小结&#xff1a; 1. 题目&#xff1a; 2. 代码&#xff1a; #include<iostream> using namespace std;int pow(int x, int n){// 边界条件 if (x 0) re…