Docker和containerd之概览(Overview of Docker and Containerd)
Docker和containerd之概览
-
容器本质上就是一个进程。
-
Namespace是一种逻辑分组机制,允许您将集群资源划分为独立的虚拟环境。每个 Namespace 为资源提供了一个范围,使得不同的团队、应用程序或环境可以在同一集群中共存,而不会相互干扰。
-
Cgroups(是control groups的简写)是Linux内核用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)的功能。
它是Google的工程师在2006年发起的一个项目,2008年通过 Namespace 实现资源(网络、文件、系统等)隔离,通过 Cgroups 实现资源(CPU、内存)限制,让我们使用起来就感觉像在操作虚拟机一样,但其和虚拟机本质上的区别,那就是容器和宿主机是共享同一个内核的 容器和宿主机是共享同一个内核的。为了将我们的应用进程运行在容器中,当然就需要有一些方便的接口或者命令去调用 Linux 的系统功能来实现,而容器运行时就是用来运行和管理容器进程、镜像的工具。
容器运行时分类
k8S为什么不支持docker了?
随着Docker的普及,容器化领域出现了Docker公司独占的趋势。为了应对这一局面,Docker将其libcontainer组件捐赠给OCI(开放容器倡议)组织,并将其更名为Runc,以去除与Docker的关联。Runc主要定义了镜像和运行时的规范。
为防止Docker的垄断,容器领域的几位领军人物成立了CNCF(云原生计算基金会),Kubernetes成为该基金会的代表作,容器编排领域也以K8S的胜出而告终。此时,Docker决定将其containerd组件捐赠给CNCF,以提升自身的存在感。

在2020年,Kubernetes 宣布弃用 dockershim,正式切换到容器运行时接口(CRI)。CRI 是一组接口,用于解耦 Kubernetes 平台与特定容器运行时的实现,最早在 Kubernetes 1.5中引入,充当kubelet和容器运行时之间的桥梁。弃用的主要原因并非 Kubernetes 无法使用 Docker,而是 CRI 的实现不再支持 dockershim,因此只支持兼容 CRI 接口的容器。

要不要放弃使用docker?
继续使用docker的优缺点:
-
未来面临无法升级和使用高版本K8S环境;
-
没有增加学习成本。
使用containerd的优缺点:
-
命令不一样,有学习成本;
-
暂时的字段格式略有区别;
-
更简单、更稳定、更高效。
总结来说,Docker 是一个全面的容器管理解决方案,而 containerd 是一个专注于容器运行时的轻量级组件。
docker和containerd区别:
docker和containerd的镜像存储目录不一致,说明他们不是共享的,但是镜像可通用。



Containerd详解
官网:https://containerd.io/
containerd安装
官网下载地址:https://containerd.io/downloads/
# containerd软件包[root@node1 ~]# wget https://github.com/containerd/containerd/releases/download/v1.7.14/containerd-1.7.14-linux-amd64.tar.gz# runc软件包[root@node1 ~]# wget https://github.com/opencontainers/runc/releases/download/v1.2.0-rc.3/runc.amd64# cni软件包wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz注:containerd默认不会自带runc(真正创建容器的程序),所以需要安装runc程序,以及cni网络插件(容器之间网络通信所需)。解压缩,安装tar -zxvf containerd-1.7.14-linux-amd64.tar.gz -C /usr/local# runc安装install -m 755 runc.amd64 /usr/local/sbin/runc# cni安装mkdir -p /opt/cni/bintar -zxvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz# 生成Containerd配置文件containerd config default > /etc/containerd/config.toml# 2条配置修改:# 65行:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8" 【修改pause容器镜像为国内】# 137行:SystemdCgroup = true 【让Runc使用system cgroup驱动,对容器进行资源划分,隔离。】# wq保存退出配置Systemd管理Containerd# 下载Containerd官方提供的Service文件:https://raw.githubusercontent.com/containerd/containerd/main/containerd.service# 将内容完整的复制到该路径下:vim /usr/lib/systemd/system/containerd.service启动Containerdsystemctl start containerdsystemctl status containerd● containerd.service - containerd container runtimeLoaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)Active: active (running) since 二 2023-06-13 18:55:26 CST; 5h 4min agoDocs: https://containerd.ioProcess: 17524 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)Main PID: 17526 (containerd)Tasks: 9Memory: 20.8MCGroup: /system.slice/containerd.service└─17526 /usr/local/bin/containerd
ctr和crictl使用
可以使用ctr或者crictl进行管理containerd,crictl是为K8S而生,只要当k8s.io命名空间存在才可使用。
ctr操作
## 列出镜像ctr i ls## 拉取镜像ctr i pull docker.io/library/redis:alpine## 查看命名空间ctr ns ls## 运行容器ctr run -t registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpine redis## 查看运行的容器ctr c ls## 查看容器运行任务ctr t ls## 杀死容器ctr t kill redis## 删除容器任务,但是容器中还可以看到,只是停止运行ctr t rm redis## 删除容器ctr c rm redis
crictl操作
## 列出镜像crictl images## 查看容器crictl ps## 查看PODcrictl pods
docker运行的容器在containerd是否看得到?
可以,如下图docker运行容器的容器ID可在containerd的task中匹配进行对应。两者的区别只是命名空间的不同,docker默认用的是default,而containerd使用的是moby,如果是K8S拉起containerd的话,则K8S会默认在containerd拉起并使用一个K8S.io的命名空间。

相关文章:
Docker和containerd之概览(Overview of Docker and Containerd)
Docker和containerd之概览 容器本质上就是一个进程。 Namespace是一种逻辑分组机制,允许您将集群资源划分为独立的虚拟环境。每个 Namespace 为资源提供了一个范围,使得不同的团队、应用程序或环境可以在同一集群中共存,而不会相互干扰。 C…...
【愚公系列】《高效使用DeepSeek》015-文献摘要生成
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
【多线程】线程不安全问题
文章目录 多线程不安全的原因大的层面->多线程是随机调度的容易产生死锁 小的层面->内存不可见性引入volatile关键字 指令重排序不是原子性带来的隐患 synchronized锁的互斥性及作用可重入性——解决死锁 wait()和notify()两个突然迸发出的疑问 多线程不安全的原因 大的…...
为什么“连接断开可能导致锁未释放”
目录 两种典型场景可能导致锁未及时释放1. **数据库未及时检测到连接断开**2. **应用程序未正确处理事务** 为什么说“可能因连接断开导致死锁”?如何避免此类问题?总结 在大多数数据库实现中,如果持有锁的连接(或会话)…...
【C++】树和二叉树的实现(下)
本篇博客给大家带来的是用C语言来实现数据结构树和二叉树的实现! 🐟🐟文章专栏:数据结构 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想ÿ…...
注入绕过方法
目录 1.绕过 特定过滤 1.绕过空格过滤 2.绕过or,and等等过滤 3.绕过注释符过滤 4.绕过字段过滤 5. 单引号绕过 6. 逗号绕过 7. 等号与运算符绕过 2.绕过 过滤方法 1. 大小写统一过滤绕过 2. 递归替换规则绕过 3. 正则贪婪匹配绕过…...
kafka指北
为自己总结一下kafka指北,会持续更新。创作不易,转载请注明出处。 目录 集群controller选举过程broker启动流程 主题创建副本分布ISRleader副本选举机制LEO 生产数据流程同步发送和异步发送 分区策略ack应答生产者发送消息的幂等性跨分区幂等性问题&…...
Python基础语法全解析:从入门到实践
Python作为一门简洁高效、功能强大的编程语言,凭借其易读性和丰富的生态系统,已成为编程领域的“明星语言”。本文将系统讲解Python的核心语法,涵盖变量、数据类型、控制结构、函数、模块等核心概念,帮助读者快速掌握编程基础。 一…...
7、vue3做了什么
大佬认为有何优点: 组合式api----逻辑集中、对ts有更好的支持RFC–开放了一个讨论机制,可以看到每一个api的提案,方便源码维护,功能扩展,大家一起讨论 官方rfc响应式独立,new Proxy,天生自带来…...
OneCyber 平台
OneCyber 平台是一个专注于 网络安全 和 风险管理 的综合性解决方案平台。它旨在帮助企业和组织应对日益复杂的网络威胁,提供从威胁检测、风险评估到响应和恢复的全方位服务。以下是关于 OneCyber 平台的一些关键信息: 核心功能 威胁检测与分析ÿ…...
基于大语言模型与知识图谱的智能论文生成工具开发构想
基于大语言模型与知识图谱的智能论文生成工具开发构想 一、研究背景与意义 1.1 学术写作现状分析 #mermaid-svg-FNVHG5EiEgVSCpHK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FNVHG5EiEgVSCpHK .error-icon{fil…...
JUC大揭秘:从ConcurrentHashMap到线程池,玩转Java并发编程!
目录 JUC实现类 ConcurrentHashMap 回顾HashMap ConcurrentHashMap CopyOnWriteArrayList 回顾ArrayList CopyOnWriteArrayList: CopyOnWriteArraySet 辅助类 CountDownLatch 线程池 线程池 线程池优点 ThreadPoolExecutor 构造器各个参数含义: 线程…...
4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)
IPv4协议:网络世界的快递包裹指南(附拆箱说明书) “IPv4就像一张明信片,既要写清楚地址,又要控制大小别超重” —— 某网络工程师的桌面铭牌 一、IPv4报头:快递面单的终极艺术 1.1 报头结构图(…...
苍穹外卖-阿里云OSS使用
第一步: package com.sky.properties;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component ConfigurationProperties(prefix "sky.alioss") …...
SSL/TLS 和 SSH 区别
背景知识 对称加密算法 定义:对称加密算法是指加密和解密使用同一个密钥的加密方式。 加密过程:发送方用密钥加密数据,接收方用相同的密钥解密数据。 优点:对称加密算法通常比非对称加密算法更高效,适合处理大量数据…...
Vue生命周期_Vue生命周期钩子
一、生命周期介绍 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。 在此过程中,它也会运行被称为生命周期钩子的函数,让…...
数据库设计实验(4)—— 数据更新实验
一、目的与要求 掌握用SQL语句实现数据的插入、修改和删除。 二、实验准备 1. 建立一个商店的数据库store,记录顾客及其购物情况,由下面三个表组成: 商品(商品号,商品名,单价,商品类别&#x…...
Apache DolphinScheduler:一个可视化大数据工作流调度平台
Apache DolphinScheduler(海豚调度)是一个分布式易扩展的可视化工作流任务调度开源系统,适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据…...
再学:call与delegatecall、call转账 Bank合约
目录 1.call与delegatecall 2.transfer && call 3.若想内部传递abi编码 4.Bank合约 1.call与delegatecall call:切换上下文 delegatecall:不切换上下文 delegatecall可以理解为 A在调用B这个集成在A的方法 可升级合约,常用del…...
关于解决新版本spring项目请求测试接口返回406的问题
目录 一、问题产生 二、问题排查 (1)首先是打断点debug进行排查 (2)网上查找相关资料排查 (3)老项目测试 三、问题解决 一、问题产生 使用Apifox对后端发送请求进行接口测试时返回状态码406࿰…...
linux入侵排查_应急响应
1.实验目标 掌握linux系统中信息收集的方法 掌握linux系统中持久化操作方法及排查方式 掌握linux系统入侵排查思路 2.实验步骤 1.统计攻击者爆破次数 2.排查攻击者第一次使用恶意用户登录的时间 3.检查sudoer文件 4.排查计划任务 5.排查计划任务 6.排查恶意服务 7.排查…...
AI视频生成产品体验分享(第2趴):Vidu、Hailuo、Runway、Pika谁更胜一筹?
hi,大家,继上次体验完可灵、即梦和pixverse,今天打算从产品经理的角度再研究下Vidu、Hailuo、Runway、Pika这几款产品!欢迎加入讨论! 一、产品简介 1. Vidu:国产自研的「一致性标杆」 📌官网…...
R语言高效数据处理-自定义格式EXCEL数据输出
注:以下代码均为实际数据处理中的笔记摘录,所以很零散, 将就看吧,这一篇只是代表着我还在,所以可能用处不大,这一段时间都很煎熬! 在实际数据处理中为了提升效率,将Excel报表交付给…...
JavaScript基础-获取元素
在Web开发中,使用JavaScript动态地访问和操作网页上的元素是一项基本技能。通过获取页面上的特定元素,我们可以对其进行各种操作,比如修改内容、样式或属性等。本文将详细介绍几种获取DOM元素的方法,并探讨它们的特点及适用场景。…...
基于srpingboot高校智慧校园教学管理服务平台的设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
【小白向】Word|Word怎么给公式标号、调整公式字体和花括号对齐
【小白向】Word|Word怎么给公式标号、调整公式字体和花括号对齐 我的版本:Word 2021 如需快速查看关键步骤,请直接阅读标红部分。 如果遇到无法调整的情况,可以直接下载我的示例文档进行参考:花括号和其他的示例公式.…...
uniapp-x vue 特性
生命周期 在组合式API中,组件可以监听应用和页面的生命周期。但由于应用和页面都有onShow和onHide,导致重名。所以在组合式的组件中监听页面的显示隐藏,改为了onPageShow和onPageHide。 这个和uniapp不一样,uniapp自定义组件无法…...
js逆向-下载某音乐
首先点击播放音乐,会拿到这样一个数据包 查看参数两个参数都是加密的 返回包里面有一个url,url拿到访问发现就是音频链接 访问直接下载下来 要逆向这两个参数采用xhr断点 这里加上路径的一部分 发现这些参数都是加密的 往下跟栈&am…...
百度OCR调用记录
根据说明,调用测试 设置注册的API Key和Secret Key 调用类(官方文档中有) 这里改传入路径; 测试问题 1.{"error_code":110,"error_msg":"Access token invalid or no longer valid"} 查到说是 …...
GraphDPI:通过互信息最大化进行图表示学习来消除部分标签歧义
论文源地址 1. 内容概要 本文提出了一种新的弱监督学习方法GraphDPI,解决部分标签学习(Partial Label Learning,PLL)中的标签歧义问题。GraphDPI结合了图表示学习和互信息最大化,通过图卷积网络(GCN&…...
