当前位置: 首页 > news >正文

docker和containerd的区别

docker和containerd的区别

1、容器运行时

1.1 容器运行时概念

容器运行时(Container Runtime)是一种负责在操作系统层面创建和管理容器的软件工具或组件。它是容器化技术的核心组件之一,用于在容器内部运行应用程序,并提供隔离、资源管理和安全等功能。 在Kubernetes中,容器运行时是负责管理和运行容器的组件。在过去,Docker是最常用的容器运行时,但随着时间的推移,containerd成为Kubernetes的另一个受欢迎的容器运行时选择。注意:自kubernetes1.24 版起,Dockershim 已从Kubernetes项目中移除。

1.2 容器运行时的作用

  • 容器创建和启动:容器运行时负责根据预定义的容器配置信息(如镜像、命令、环境变量等),创建并启动容器实例。
  • 容器文件系统管理:容器运行时处理容器的文件系统,负责将镜像的内容挂载到容器的文件系统,并在容器之间提供隔离。
  • 资源限制和管理:容器运行时可以根据用户或管理员定义的资源限制,管理容器对CPU、内存、磁盘等资源的使用。
  • 容器网络:容器运行时协助配置容器的网络,使得容器可以与其他容器或外部网络进行通信。
  • 安全性:容器运行时实施安全机制,确保容器之间和宿主机之间的隔离,并防止容器中的恶意行为影响其他容器或宿主机。

2、容器运行时的类型

2.1 docker

Docker是一个开源的容器平台,提供了一整套容器解决方案,包括构建、打包、分发和运行容器。它包括Docker Engine、Docker Swarm、Docker Compose等多个组件,提供了镜像构建、容器编排等高级功能,适合需要复杂容器管理功能的用户。

2.2 containerd

Containerd是一个轻量级的容器运行时,专注于底层的容器生命周期管理,如容器的创建、启动、停止和销毁。它比Docker更轻量级,可以快速启动和运行容器,并且具有更好的性能和可扩展性。Containerd的设计更加简单和稳定,提供了API,可以与其他容器编排工具集成使用,使其更加灵活和可扩展。

3、docker和containerd在kubernetes中的区别

3.1 二者工作流程

docker的工作流程
在这里插入图片描述
containerd的工作流程
在这里插入图片描述

3.2区别

1.调用链和组件数量

当使用Docker作为容器运行时,调用关系为:kubelet --> dockershim(在kubelet进程中) --> dockerd --> containerd。这里涉及到多个组件和较长的调用链。
当使用Containerd作为容器运行时,调用关系为:kubelet --> CRI plugin(在containerd进程中) --> containerd。Containerd的调用链更短,组件更少,因此更稳定,且占用节点资源更少。

2.命名空间

Containerd引入了命名空间的概念,每个image和container都会在各自的namespace下可见。这提供了更好的隔离性和管理性。而Docker没有这种命名空间的概念。

3.日志配置和流转发通道

当使用Docker时,Docker API本身提供stream服务,kubelet内部的docker-shim会通过Docker API进行日志配置和流转发。
当使用Containerd时,可能需要额外的配置或工具来实现这些功能,因为Containerd本身不提供与Docker相同的stream服务。

4、containerd的客户端工具—nerdctl

root@master01:~# wget https://github.com/containerd/nerdctl/releases/download/v1.5.0/nerdctl-1.5.0-linux-amd64.tar.gz
root@master01:~# mkdir -p  /usr/local/containerd/bin/
root@master01:~# tar -xvf nerdctl-1.5.0-linux-amd64.tar.gz
root@master01:~# mv nerdctl /usr/local/containerd/bin/
root@master01:~# ln -s /usr/local/containerd/bin/nerdctl /usr/local/bin/nerdctl
root@master01:~# wget https://github.com/moby/buildkit/releases/download/v0.12.5/buildkit-v0.12.5.linux-amd64.tar.gz
root@master01:~# mkdir -p /usr/local/buildctl -p  && tar -zxvf  buildkit-v0.12.5.linux-amd64.tar.gz -C /usr/local/buildctl
root@master01:~# ln -s /usr/local/buildctl/bin/buildkitd /usr/local/bin/buildkitd
root@master01:~# ln -s /usr/local/buildctl/bin/buildctl /usr/local/bin/buildctl
root@master01:~# cat >> /etc/systemd/system/buildkit.service <<EOF
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true[Install]
WantedBy=multi-user.target
EOF
root@master01:~# systemctl daemon-reload
root@master01:~# systemctl enable buildkit --now
root@master01:~# systemctl status buildkit
root@master01:~# nerdctl version
Client:Version:	v1.5.0OS/Arch:	linux/amd64Git commit:	b33a58f288bc42351404a016e694190b897cd252buildctl:Version:	v0.12.5GitCommit:	bac3f2b673f3f9d33e79046008e7a38e856b3dc6Server:containerd:Version:	1.6.31GitCommit:	e377cd56a71523140ca6ae87e30244719194a521runc:Version:	1.1.12GitCommit:	v1.1.12-0-g51d5e94

相关文章:

docker和containerd的区别

docker和containerd的区别 1、容器运行时 1.1 容器运行时概念 容器运行时&#xff08;Container Runtime&#xff09;是一种负责在操作系统层面创建和管理容器的软件工具或组件。它是容器化技术的核心组件之一&#xff0c;用于在容器内部运行应用程序&#xff0c;并提供隔离…...

汇编实现流水灯

1.使能时钟&#xff1a; 1使能GPIO的外设时钟ldr r0,0x50000A28ldr r1,[r0]orr r1,r1,#(0x3<<4)//使能第&#xff14;&#xff0c;&#xff15;位str r1,[r0] 2.设置为输出模式 设置GPIOE10为输出模式ldr r0,0x50006000ldr r1,[r0]bic r1,r1,#(0x3<<20)orr r1,r1…...

SQL生成序列浅析

01.sqlserver版本 使用sqlserver将数据复制n条 selectt.indx,t.name,tmp.vlue from (values(1,苹果) ) as t(indx, name) ,(select[number] as vluefrom master.dbo.spt_valueswhere [type] pand [number] between 1 and 10 ) as tmpspt_values是什么 spt_values是SQL Se…...

24年gdcpc省赛C题

1279:DFS 序 先不考虑多节点,先看着颗二叉树,假设他们的父亲节点是第k个被访问的点,如果先访问左子树,那么得到的结果是a1*ka2*(k1)b1*(2k)b2*(2k1),可以发现,先访问左子树,那么右子树每次的乘以的p值实际上是左子树乘以的p值加上左子树的节点个数,比如a1*k和b1*(2k),如果不看2…...

以梦为马,不负韶华(3)-AGI在企业服务的应用

AGI在企业服务中&#xff0c;各应⽤已覆盖企业全流程&#xff0c;包含⼈⼒、法务、财税、流程⾃动化、知识管理和软件开发各领域。 由于⼤语⾔模型对⽂本处理类场景有着天然且直接的适配性&#xff0c;⽂本总结、⽂本内容⽣成、服务指引等发展起步早且应⽤成熟度更⾼。 在数据…...

Xshell 使用

Xshell 使用 ①xshell 安装包 ②xshell 卸载 ③xshell 同时控制多窗口 ①xshell 安装包 Xshell 7 破解版 ②xshell 卸载 第一步: 打开控制面板卸载xshell 第二步: win+R,输入regedit,打开注册表,删除xshell相关注册信息 注册表目录: 在下面两个目录中查找xshell相关…...

【yijiej】mysql报错 之 报错:Duplicate entry 字段 for key ‘表名.idx_字段’

一、问题操作 Mysql 进行insert 操作&#xff0c;报错&#xff1a;Duplicate entry 字段 for key ‘表名.idx_字段’ 原因解析&#xff1a;idx 是做的索引键&#xff0c;是具有唯一性二、问题原因&#xff08;三种情况&#xff0c;当前我遇到的情况是第一种&#xff09; 1、当 …...

解决npm卡死,无法安装依赖

npm卡死&#xff0c;无法安装依赖 异常描述原因分析与解决方法 异常描述 1.无法进入命令行&#xff0c;或是很慢没反应 2.装表格无限滚动的el-table-infinite-scroll依赖一上午了&#xff0c;也不能装&#xff0c;报错提示 原因分析与解决方法 1.命令行的问题&#xff1a;缓…...

速卖通测评揭秘:如何选择安全的渠道操作

许多商家对测评存在误解&#xff0c;认为只需进行几次测评就能迅速打造爆款。实际上&#xff0c;测评是一个需要计划和持久性的过程&#xff0c;以便让平台检测到产品的受众程度并提高产品的曝光和权重。 在进行测评时&#xff0c;安全是首要考虑的问题。平台可以通过设备、网…...

ping不通ip的解决方法

解决ping不通IP的问题可以通过以下几种方法&#xff1a; 1.检查IP配置&#xff1a;确保所有设备的IP地址、子网掩码和默认网关配置正确。如果使用DHCP&#xff0c;请确认设备已设置为自动获取IP地址&#xff0c;并检查DHCP服务器的地址池配置是否正确且未耗尽。 2.检查网络设…...

Linux x86_64 UEFI 启动

文章目录 前言一、UEFI二、Disk device compatibility2.1 GPT 磁盘分区表2.1.1 简介2.1.2 Linux 2.2 ESP&#xff08;EFI&#xff09; 文件系统2.2.1 简介2.2.2 LinuxLinux Kernel EFI Boot Stub 三、UEFI GPT grub23.1 简介3.2 引导方式 3.3 BOOTX64.EFI3.4 shimx64.efi3.5 …...

妙解设计模式之适配器模式

目录 适配器模式的概念生活中的例子在编程中的例子 软件工程中的实际应用兼容旧接口整合第三方库简化复杂接口跨平台支持 总结 适配器模式的概念 适配器模式是一种结构设计模式&#xff0c;它允许将接口不兼容的类通过一个适配器类进行适配&#xff0c;使得这些类可以一起工作…...

【Linux】Linux下centos更换国内yum源

&#x1f331;博客主页&#xff1a;青竹雾色间 &#x1f331;系列专栏&#xff1a;Linux &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 1. 备份旧的 YUM 源文件2. 下载国内的 YUM 源文件阿里云&#xff1a;网易&#xff1a; 3. 清理 YUM 缓存4. 更新…...

HTML静态网页成品作业(HTML+CSS)——动漫熊出没介绍网页(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有3个页面。 二、作品演示 三、代…...

算法训练营day42

dp含义确定 递推公式 初始化 遍历顺序 打印 题目1&#xff1a;62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int uniquePaths(int m, int n) {// 定义dp数组 含义是每个坐标到达的路径vector<vector<int>> dp(m, vector&l…...

【Vue】自动导入组件

1. 下载插件 npm install unplugin-vue-components 2. 修改vite.config.js import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from vitejs/plugin-vue import Components from unplugin-vue-components/vite // 按需加载自定义组件/…...

mfc140u.dll丢失的解决方法有哪些?怎么全面修复mfc140u.dll文件

mfc140u.dll丢失其实相对来说不太常见到&#xff0c;因为这个文件一般是不丢失的&#xff0c;不过既然有人遇到这种问题&#xff0c;那么小编一定满足各位&#xff0c;给大家详细的唠叨一下mfc140u.dll丢失的各种解决方法&#xff0c;教大家以最快最有效率的方法去解决mfc140u.…...

MySQL8报错Public Key Retrieval is not allowedz 怎么解决?

问题描述 当我们使用数据库管理工具连接mysql8的时候&#xff0c;可能遇到报错&#xff1a; Public Key Retrieval is not allowed 解决办法 1、在连接属性中配置allowPublicKeyRetrieval设置为true 2、在连接URL中加上配置allowPublicKeyRetrieval为true...

海外动态IP代理如何提高效率?

动态住宅IP代理之所以能够有效提升数据爬取的效率和准确性&#xff0c;主要归功于其提供的IP地址具有高度的匿名性和真实性。这些IP地址来自于真实的用户网络&#xff0c;因此相比于数据中心IP&#xff0c;它们更不容易被网站的安全系统标识为爬虫。此外&#xff0c;由于IP地址…...

解析边缘计算网关的优势-天拓四方

随着信息化、智能化浪潮的持续推进&#xff0c;计算技术正以前所未有的速度发展&#xff0c;而边缘计算网关作为其中的重要一环&#xff0c;以其独特的优势正在逐步改变我们的生活方式和工作模式。本文将详细解析边缘计算网关的优势。 首先&#xff0c;边缘计算网关具有显著的…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...