Docker Containerd初体验
Docker Containerd概述
Containerd是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由Docker开发团队创建的,并在后来成为了一个独立的项目,被纳入了Cloud Native Computing Foundation(CNCF)的孵化项目中。
Containerd的特点和功能
- 容器生命周期管理
- Containerd管理容器的生命周期,包括容器的创建、运行、暂停、恢复、停止和销毁等操作
- 标准化接口
- Containerd提供了一个标准化的容器运行时接口,使得它可以与多个容器编排系统和工具集成,例如kubernetes、Docker Compose
- 镜像管理
- 它支持容器镜像的拉取、推送、保存和加载等操作、Containerd使用OCI(Open Cintainer Initiative)规范定义容器镜像的格式
- 插件体系结构
- Containerd具有可扩展插件体系接、运行用户通过插件来扩展其功能,例如存储去掉、网络插件等。
- 跨平台支持
- Containerd可以在不同的操作系统上运行,从而提供了跨平台的支持。
- 与kubernetes集成
- Contained作为Kubernetes的默认容器运行时,与kubernetes紧密集成,为容器工作负载的管理提供了良好的支持
- 安全性
- Contained实现了严格的容器隔离和安全性措施,确保容器之间的隔离性以及对主机系统的安全性。
Containerd的起源与背景
- Containerd 的起源可以追溯到Docker 项目。Docker 最初作为一个开源项目推出,旨在简化应用程序的打包、分发和部署过程。Docker引入了容器的概念,将应用程序和其依赖项打包到一个容器中,使得应用在不同环境中可以一致地运行。
- 随着Docker的发展,其架构逐渐变得复杂,包含了许多功能,如镜像构建、服务编排等。为了更好 地组织和管理这些功能,Docker团队决定将Docker 引擎拆分成多个组件,其中一个关键的组件就是 Containerd。
Containerd架构概述
-
Containerd的架构是moduiarity(模块化)和可扩展的体现,它被设计为一个轻量级、高度可定制的容器运行时s
-
为了解耦Containerd将系统划分为了不同的组件,每个组件都由一个或多个模块写作完成(Core部分),每一种类型的模块都以插件的形式集成到Containerd中
-
Containerd组件大致分为Storage、Metadata和Runtime这三个主要方面

Docker Containerd安装与使用
安装Containerd
#使用ali镜像仓库
[root@bogon ~]# rm -rf /etc/yum.repos.d/*
[root@bogon ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@bogon ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# step 1: 安装必要的一些系统工具
[root@bogon ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
[root@bogon ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
[root@bogon ~]# sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
[root@bogon ~]# yum clean all
#安装Containerd
[root@bogon ~]# yum -y install containerd.io
配置Containerd
#生成配置文件
[root@bogon ~]# mkdir -p /etc/containerd #没有该目录创建
#更改默认配置文件
[root@bogon ~]# containerd config default>/etc/containerd/config.toml
#配置镜像加速
[root@bogon ~]# vim /etc/containerd/config.toml
#找到[plugins."io.containerd.grpc.v1.cri".registry.mirrors]该行
#添加阿里云镜像源[plugins."io.containerd.grpc.v1.cri".registry.config."docker.io"]endpoint = ["https://registry.cn-hangzhou.aliyuncs.com" ,"https://registry-1.docker.io"]#启动服务
[root@bogon ~]# systemctl enable containerd
[root@bogon ~]# systemctl start containerd
Containerd基本操作
镜像类操作
#拉取镜像
[root@bogon ~]# ctr images pull hub.atomgit.com/amd64/nginx:1.25.2-perl
#查看镜像
[root@bogon ~]# ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS
hub.atomgit.com/amd64/nginx:1.25.2-perl application/vnd.docker.distribution.manifest.v2+json sha256:615eb6b7237368628ba586460fdab74bccbd4610533f59717ef2cc7c25458efc 78.5 MiB linux/amd64 -
#检测本地镜像
[root@bogon ~]# ctr images check
#重命名
[root@bogon ~]# ctr images tag hub.atomgit.com/amd64/nginx:1.25.2-perl nginx:v1
[root@bogon ~]# ctr images tag hub.atomgit.com/amd64/nginx:1.25.2-perl nginx:v2
#删除镜像
[root@bogon ~]# ctr images tag rm nginx:v2
#镜像挂载到主目录
[root@bogon ~]# ctr images mount nginx:v1 /mnt
[root@bogon ~]# df
ctr images mount nginx:v1 /mnt
#取消镜像挂载
[root@bogon ~]# ctr images unmount /mnt
#镜像导出 格式:ctr images export --all-platforms 文件名 镜像名称:[镜像标签]
[root@bogon ~]# ctr images export --all-platforms nginx_v1.tar nginx:v1
#镜像导入 格式:ctr images import 文件名
[root@bogon ~]# ctr imgaes import nginx_v1.tar
容器类操作
#创建容器
[root@bogon ~]# ctr containers create nginx:v1 nginx
#列出容器
[root@bogon ~]# ctr containers ls
#查看容器详细信息
[root@bogon ~]# ctr containers info nginx
#删除容器
[root@bogon ~]# ctr containers rm nginx
[root@bogon ~]# ctr containers ls
任务类操作
#启动容器 容器需先存在
[root@bogon ~]# ctr containers create nginx:v1 nginx
[root@bogon ~]# ctr task start -d nginx
-d 放入后台运行
#查看容器
[root@bogon ~]# ctr task ls
#进入容器
[root@bogon ~]# ctr task exec --exec-id 0 -t nginx sh
--exec-id id随意数字但不要重复
#暂停容器
[root@bogon ~]# ctr task pause nginx
[root@bogon ~]# ctr task ls
#恢复容器
[root@bogon ~]# ctr task resume nginx
[root@bogon ~]# ctr task ls
#杀死容器
[root@bogon ~]# ctr task kill nginx
[root@bogon ~]# ctr task ls
#删除任务
[root@bogon ~]# ctr task rm nginx
#但创建容器时,也有同名快照,即便已经删除,可以使用ctr task start -d nginx命令,利用已删除的任务启动起来,使此容器恢复运行
#删除容器
[root@bogon ~]# ctr task kill nginx
[root@bogon ~]# ctr container rm nginx
#获取容器的内存、CPU和PID的限额与使用量
[root@bogon ~]# ctr containers create nginx:v1 nginx
[root@bogon ~]# ctr task start -d nginx
[root@bogon ~]# ctr task metrics nginx
#查看容器中所有进程在宿主机中的PID
[root@bogon ~]# ctr task ps nginx
其他操作
#列出当前所有插件
[root@bogon ~]# ctr plugins ls
#查看命名空间
[root@bogon ~]# ctr ns create test
[root@bogon ~]# ctr ns ls
#创建命名空间
[root@bogon ~]# ctr ns create test
[root@bogon ~]# ctr ns create test01
[root@bogon ~]# ctr ns ls
#删除命名空间
[root@bogon ~]# ctr ns rm test01
#使用命名空间 使用-n 指定命名空间
[root@bogon ~]# ctr -n test
test
[root@bogon ~]# ctr ns create test01
[root@bogon ~]# ctr ns ls
#删除命名空间
[root@bogon ~]# ctr ns rm test01
#使用命名空间 使用-n 指定命名空间
[root@bogon ~]# ctr -n test
相关文章:
Docker Containerd初体验
Docker Containerd概述 Containerd是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由Docker开发团队创建的,并在后来成为了一个独立的项目,被纳入了Cloud Native Computing Foundation(C…...
开始使用 AWS SAM CLI
了解如何使用 AWS SAM CLI 在本地调试 lambda 函数 欢迎来到雲闪世界。我们将学习 AWS SAM CLI 的概念。SAM 是无服务器 应用程序 模型的缩写,是 Amazon Web Services 提供的一个框架,可以利用它在本地机器上构建应用程序并将其直接部署到 AWS Lambdas。…...
RK3588 RTL8125BG调试
RTL8125B是一款PCIE转RJ45的网卡控制器芯片,在底层调试时只需配置PCIE即可 diff --git a/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi index 798359eaf061..d8a7a43cdfa0 100755 --- a/arch/arm64/bo…...
Python自省(机制与函数)
Python 自省(Introspection)是一种强大的特性,它允许程序在运行时检查对象的类型、属性以及它们如何相互关联。这种能力让 Python 非常适合于快速开发、调试以及编写需要高度动态交互的代码。Python 的自省机制主要通过内置的函数和类型来实现…...
【JavaEE】JVM 内存区域划分,以及 Java 垃圾回收机制引用计数器,可达性分析等
目录 1. JVM执行流程 2. JVM运行时数据区 2.1 堆 2.2 Java虚拟机栈(线程私有) 2.3本地方法栈(线程私有) 2.4 程序计数器 2.5 元数据区 3. JVM的类加载机制 1) 加载 2) 验证 3) 准备 4) 解析 5) 初始化 双亲委派模型 4. java垃圾回收 4.1 死亡对象判断方法 a) …...
Web开发:C# MVC + Session机制实现授权免登录demo
token基础demo 【需求】 Home/Index 登录界面,校验成功后可以登录到Main/Index ,用户登录3分钟内关闭网站,再次访问Home/Index时可以免密登录Main/Index 【配置文件-Program.cs】 var builder WebApplication.CreateBuilder(args);// Add services t…...
【Qt】QWidget的font属性
QWidget的font属性 API说明 font() 获取当前 widget 的字体信息. 返回 QFont 对象. setFont(const QFont& font) 设置当前 widget 的字体信息. 关于Qfont 属性说明 family 字体家族. ⽐如 "楷体", "宋体", "微软雅⿊" 等. pointSiz…...
每天一个数据分析题(四百八十五)- 统计推断
假设检验中,关于p值说法正确的是? A. p值是在原假设成立时,样本观察结果发生的概率。 B. p值是接受原假设的概率 C. p值是相对样本统计量而言的 D. 用p值做决策比用域值做决策更准确 数据分析认证考试介绍:点击进入 题目来源…...
基于STM32的农业病虫害检测检测系统:OpenCV、MQTT、Flask框架、MySQL(代码示例)
一、项目概述 随着全球农业现代化的不断推进,智能农业监测系统应运而生。此项目旨在通过实时监测土壤湿度、温度等环境数据,结合作物生长状态的分析,提高农业生产效率和作物质量。通过引入STM32单片机、OpenCV图像处理技术和后端数据分析系统…...
算法日记day 39(动归之打家劫舍)
一、打家劫舍1 题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。…...
Vue 生命周期详解含demo、面试常问问题案例
Vue 生命周期详解、面试常问问题案例 含 demo 文章目录 Vue 生命周期详解、面试常问问题案例 含 demo一、Vue 生命周期是什么二、Vue 中如何使用生命周期钩子1. **beforeCreate**2. **created**3. **beforeMount**4. **mounted**5. **beforeUpdate**6. **updated**7. **beforeD…...
表单自定义规则的校验
在 Vue 3 中使用 Element Plus 的表单组件进行自定义规则的校验非常方便。Element Plus 提供了 ElForm 和 ElFormItem 组件,它们内置了表单验证的功能。下面我将详细介绍如何使用 Element Plus 进行自定义规则的校验。 创建表单及规则 首先,你需要创建…...
JVM 有哪些垃圾回收算法(回收机制)?
JVM 有哪些垃圾回收算法(回收机制)? 标记-清除算法 在Java虚拟机中,标记-清除算法是一种用于垃圾回收的算法。它分为两个阶段:标记阶段和清除阶段。 在标记阶段,垃圾收集器会遍历堆内存中的所有对象&…...
2024年高教社杯数学建模国赛A题思路解析+代码+论文
2024年高教社杯全国大学生数学建模竞赛(以下简称国赛)将于9月5日晚6时正式开始。 下文包含:2024国赛思路解析、国赛参赛时间及规则信息说明、好用的数模技巧及如何备战数学建模竞赛 C君将会第一时间发布选题建议、所有题目的思路解析、相…...
Linux中yum、vim、gcc/g++的使用
目录 一、Linux 软件包管理器 yum 什么是软件包 关于 rzsz 查看软件包★ 如何安装软件★ 如何卸载软件★ Linux 开发工具 二、Linux编译器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操作总结 如果在vim界面不小心按了Ctrl …...
基于模糊神经网络的金融序列预测算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于模糊神经网络的金融序列预测算法matlab仿真,根据序列的MAD,RSI,KD等指标实现序列的预测和最终收益分析。 2.测试软件版本以及运行结果展示 MATLAB2022A版本…...
STM32 HAL库常用功能封装
关中断 /*** brief 关闭所有中断(但是不包括fault和NMI中断)* param 无* retval 无*/ void sys_intx_disable(void) {__ASM volatile("cpsid i"); }开中断 /*** brief 开启所有中断* param 无* retval 无*/ void sys_intx_enabl…...
golang zap日志库 打印日志时显示的源文件始终是同一个问题解决方法 zap.Option函数可选项 zap.AddCallerSkip(1) 使用示例
这种情况一般出现在我们对zap日志库进行二次封装的情况下, 在打印日志的时候的源文件非我们期望的文件,如下 原因分析 出现这个问题的原因是zap函数内部在调用 runtime.Caller 时的skip层级不对了,因为我们进行了二次封装,所以za…...
BL196MQTT远程IO模块助力智能楼宇自动化升级
在智能楼宇自动化领域,每一个细节的优化都能带来整体效率与舒适度的显著提升。钡铼技术的BL196MQTT远程IO模块,以其卓越的灵活性和强大的性能,正在成为这一领域中推动楼宇自动化升级的关键力量。 钡铼技术IOy系列:创新与灵活性的…...
【面试宝典】Java面向对象面试题总结(上)
一、重写和重载 在Java中,重写(Override)和重载(Overload)是面向对象编程中两个非常重要的概念,它们都与方法的定义和调用有关,但两者有着本质的区别。 1、重写(Overrideÿ…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
