Containerd基础用法

Linux 安装部署及使用Containerd容器管理工具 ~ 保姆级 Docker容器快速入门(1)你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux。可以很方便地在不同的地方移动和运行,不管是在你的电脑上,还是在服务器上,甚至在其他的机器上。有了 Docker,开发者就不用再担心不同的环境会导致应用出问题,因为。 阅读详情

1)关于Containerd的基础知识

从 Docker 1.11 版本开始,Docker 容器运行就不是简单通过 Docker Daemon 来启动了,而是通过集成containerd、runc等多个组件来完成的。

虽然Docker Daemon守护进程模块在不停地重构,但是基本功能和定位没有太大的变化,一直都是CS架构,守护进程负责和Docker Client端交互,并管理Docker镜像和容器。

现在的架构中组件containerd就会负责集群节点上容器的生命周期管理,并向上为Docker Daemon提供gRPC接口。

Containerd-shim是Containerd的一个插件,它用来扮演进程管理器的角色,接收来自containerd的命令,并在容器内部创建和管理进程。它可以与Runc协同工作,使得容器的创建、启动、停止、暂停和恢复等操作都能够得到有效的处理。一句话,创建容器这件事是由Containerd-shim来完成的。

我们都知道,创建容器是需要做一些namespaces和cgroups的配置,以及挂载root文件系统的操作。这些操作其实已经有了标准的规范,那就是OCI(开放容器标准)。

OCI本质上就是一个规范文档,主要规定了容器镜像的结构标准以及容器接收操作指令的标准,比如create、start、stop、delete 等这些命令。而Runc其实就是按照这个OCI的各种规范来实现管理容器的。

所以真正启动容器是通过containerd-shim去调用runc来启动容器的,runc 启动完容器后本身会直接退出,containerd-shim 则会成为容器进程的父进程, 负责收集容器进程的状态, 上报给 containerd, 并在容器中 pid 为 1 的进程退出后接管容器中的子进程进行清理, 确保不会出现僵尸进程。

Containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性,containerd 可以负责干下面这些事情:

  • 管理容器的生命周期(从创建容器到销毁容器)

  • 拉取/推送容器镜像

  • 存储管理(管理镜像及容器数据的存储)

  • 调用 runc 运行容器(与 runc 等容器运行时交互)

  • 管理容器网络接口及网络

2)containerd安装

下面步骤为在Rocky8/RHEL8上安装containerd

先安装yum-utils工具

yum install -y yum-utils

配置Docker官方的yum仓库,如果做过,可以跳过

yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo

安装containerd

yum install containerd.io -y

启动服务并设置为开机自启

systemctl enable containerdsystemctl start containerd

3)containerd命令行工具ctr

Ctr就是containerd的命令行工具,可以用来执行和管理containerd中的任务。ctr主要用于开发和调试,而不是在生产环境中使用。常见用法如下:

查看containerd版本

ctr version

拉取镜像

ctr images pull  docker.io/library/busybox:latest #其中images可以简写为i

列出本地镜像

ctr  images list #或者简写ctr i ls

修改tag

ctr i tag  docker.io/library/busybox:latest  busybox:latest

删除镜像

ctr i rm docker.io/library/busybox:latest

运行容器

ctr run  -d  busybox:latest busybox

列出运行的容器​​​​​​​

ctr containers  list  #或者简写为ctr c  ls

列出任务​​​​​​​

ctr tasks  ls #或者简写ctr t  ls

容器里执行命令

ctr t exec --exec-id 1860 busybox ls  #1860为任务ID

进入容器内部

ctr t exec -t --exec-id 1860 busybox sh

删除容器​​​​​​​

ctr t kill -s SIGKILL busybox #先杀掉进程ctr c  rm  busybox #再删除容器

总之,这个ctr工具跟docker的命令行工具用起来还是有不少差异的。

 

Containerd容器管理 这个 container 对象只是包含了运行一个容器所需的资源及配置的数据结构,例如:namespaces、rootfs 和容器的配置都已经初始化成功了,只是用户进程(本案例为nginx)还没有启动。不再使用创建静态容器---->启动静态容器,而是使用直接运行一个动态容器的方式。只要是运行中的容器都可以算是一个任务,都有着进程ID(PID),命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。,即表时在容器中运行了进程,即为动态容器。命令停止容器中运行的进程,既为停止容器。 阅读详情

相关推荐

从零到一:containerd核心命令ctr实战指南

本文详细介绍了containerd核心命令ctr的实战指南,从环境准备、镜像管理到容器生命周期管理,帮助用户从Docker平滑过渡到containerd。通过具体命令示例和常见问题排查,提升运维效率,适合Kubernetes和云原生环境下的容器管理。

weixin_30546189的博客 444

【containerd】进入容器网络空间

每个容器都有自己的文件系统,这意味着容器之间不会直接影响彼此的文件和目录。:Linux命名空间技术允许容器拥有自己的PID、网络、用户ID、挂载、IPC(进程间通信)等命名空间。:容器通过使用安全模块(如AppArmor、SELinux)和内核特性(如Seccomp)来增强安全性,限制容器内的进程对系统的访问。:容器内部运行的进程在容器外部是不可见的。每个容器都有自己的进程空间,这使得容器之间的进程不会互相干扰。选项表示您想要进入网络命名空间 ,通过查询容器的PID号即可进入对应容器的网络命名空间。

K_sir666的博客 752

dockerd、contaierd、containerd-shim、runC通信机制分析

整体框架分析 dockerd 底层运行容器需要依赖多个二级制组件:docker daemon, containerd, container-shim, runC, 代码实现上,containerd包含了container-shim代码。同一份代码,通过Makefile编译控制,编译成两个二级制文件。 组件间通信 概括图 通信流程: 1. docker daemon 模块通过 g...

Jinhua_Wei的博客 1万+

containerd启动过程

dockerd 是 docker engine 守护进程,dockerd 启动时会启动 containerd 子进程,dockerd 与 containerd 通过 rpc 进行通信ctr 是 containerd 的 clicontainerd 通过 shim 操作 runc,runc 真正控制容器生命周期,启动一个容器就会启动一个 shim 进程shim 直接调用 runc 的包函数,shim 与 containerd 之前通过 rpc 通信。

任我行的博客 1822

docker containerd runc containerd-shim等组件的关系

如果这些容器的进的父进程是 containerd ,那么当 containerd 进程挂掉或者重启时,容器的进程也会挂掉,这样就不符合容器的定义了,所以 containerd 通过 containerd-shim 来调用 runc,这样当 containerd 挂掉时,容器的进程还是会继续运行的。目前 dockershim 组件已经删除,不能使用了,所以 k8s 1.24 版本之后,kubelet 只能和实现了 cri 接口的容器运行时交互,比如 containerd,cri-o 等。

daemon365的博客 2025

1.Containerd容器运行时初识与尝试

0x00 前言简述1.基础介绍2.专业术语3.架构简述0x01 安装配置1.Ubuntu安装Containerd.io流程0x02 简单使用1.镜像拉取与运行2.创建和使用网络3.与宿主机和其它容器共享文件4.Docker 与 Containerd 并用配置0x03 Containerd 与 Docker CLI 工具命令表ctr 命令 - Containerd 管理命令...

全栈工程师修炼指南-IT知识分享 1687

docker 3、containerd用法

1 containerd 的命令行工具ctr # ctr COMMANDS: plugins, plugin provides information about containerd plugins version print the client and server versions containers, c, container manage containers content ...

qingyuanluofeng的专栏 5931

[CARLA系列--01]CARLA 0.9.15 在Windows下的安装教程(一)

Carla是一款开源的自动驾驶仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,Localization, 规划系统等等.Carla这个产品目前已经更新到了最新的0.9.15版本,目前遇到好多人在windows系统上如何安装可编辑版的Carla遇到了好多问题,所以针对在windows上的安装,推出此列教程.

汽车ECU自动化测试 4652

containerd学习 第一章:CentOS上安装containerd和使用

CentOS上安装containerd

一个标题 3532

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7509

【硬刚Hadoop】HADOOP MAPREDUCE(1):概述

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Hadoop部分补充。 1 MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 2MapReduce优缺点 2.1 优点 1)MapReduce易于编程 它简单的实现一些接口,就可以完成一个分布式程序..

微信搜:import_bigdata,大数据领域硬核原创作者 464

在centos下使用containerd管理容器:5分钟从docker转型到containerd

在 Kubernetes 的早期,我们只支持一个容器运行时。那个运行时是 Docker 引擎。那时,并没有太多其他的选择,而 Docker 是处理容器的主要工具,所以这不是一个有争议的选择。最终,我们开始添加更多的容器运行时,比如 rkt 和 hypernetes,很明显 Kubernetes 用户希望选择最适合他们的运行时。因此,Kubernetes 需要一种方法来允许集群操作员灵活地使用他们选择的任何运行时。发布了容器运行时接口(CRI) 以实现这种灵活性。

ahuang1202的专栏 2298

激光除草技术原理与应用全解析

激光除草技术通过光热、光化学等效应精准破坏杂草组织,核心参数包括功率(20-6000W)、波长(400nm-10.6μm)和脉冲宽度。主要应用于大田作物(如玉米、棉花)、经济作物(烟草、果树)及城市绿化,具有环保(无化学污染)、高效(识别率≥95%)和非接触等优势,但存在设备成本高(20-50万元)、技术门槛高等局限。当前技术融合AI识别、多光谱协同等创新,国产设备如华工智耘已实现95.3%识别精度。虽短期投入较高,但长期可降低30%除草成本,并带来环境效益(每亩减排1.2吨CO₂)

start_up_go的博客 557

Containerd 的镜像和容器管理

注意:直接导入镜像可能会出现类似"ctr: content digest sha256:xxxxxxx not found"的错误,因此在拉取和导出镜像时,都要指定" --all-platforms "参数再导入镜像。5. 启动静态容器,启动task,即表时在容器中运行了进程,即为动态容器。3. 查看任务列表:当容器运行起来的时候才会产生任务。

NancyLCL的博客 4541

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 269

【CT/电镜 重建教程 1.1】层析成像的精确实空间迭代重建算法(RESIRE)

在此,我们报告了RESIRE算法的发展用于准确的断层重建。与实空间迭代算法相比,RESIRE使用傅里叶切片定理或Radon变换作为正向投影,使用线性变换作为反向投影,两者都具有高精度。与EST和GENFIRE相比,RESIRE是一种实空间迭代算法,可以在并行计算中实现快速运行时间。

2401_87064292的博客 1062

Containerd常用命令

Containerd学习

1510

【AI编程】Claude Code 最强AI 编程利器项目实战详解

Claude Code 最强AI 编程利器项目实战详解

congge 7403

containerd容器命令

1.containerd的概述 名字:ctr (containerd CLI) 用法:CTR [global options] command [command options] [arguments…] 描述:CTR是一个不受支持的用于交互的调试和管理客户机使用容器守护进程。因为它不受支持,选项和操作不能保证向后兼容或容器项目从一个版本到另一个版本都是稳定的 注:如果没有指定默认名称空间的话,则要 (-n 名称空间) 命令 说明 操作示例 plugins, plugin

kali_yao的博客 9964

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 333

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

如何优雅的将 Kubernetes 容器运行时从 Docker 切换成 Containerd

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !前面我们了解了containerd 的发展历史和基本使用方式,本节我们就来尝试下使用 container...

easylife206的专栏 2239

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

containerd 架构及高级技巧

文章目录如何在 ctr 中使用 containerd使用 ctr 处理容器镜像使用ctr处理容器如何使用容器与nerdctl如何使用容器与crictl containerd是一个高级容器运行时,又名容器管理器。简单来说,它是一个守护进程,在单个主机上管理完整的容器生命周期:创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。 Containerd被设计成可以很容易地嵌入到更大的系统中。Docker使用containerd来运行容器。Kubernetes可以通过CRI使用containerd来管理单个节点

Kason_iWiki 1337

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ctr task run in containerd

摘要:该命令用于在名为"cloud-it"的容器中执行bash操作。其中"--exec-id"指定执行ID,"bash"仅作为标识符而非实际命令,真正的执行路径为"/bin/bash"。命令结构表明这是一个容器环境下的bash终端启动指令。

wjw7869的专栏 39

nerdctl + buildkitd 构建Containerd容器镜像

nerdctl

Lyndon的专栏 913

Containerd 学习笔记

Containerd 最早是 Docker Engine 的内部组件,2016 年后独立为 CNCF 毕业项目,提供开放、稳定的容器运行基础设施。它并非面向最终用户,而是嵌入 Swarm、Kubernetes 等编排系统,通过 gRPC API 向上层暴露容器管理能力。核心职责:每个节点上的镜像拉取、容器生命周期管理、网络、存储等。实际运行由 runc(或其他 OCI 兼容 runtime)负责。

AOwhisky的博客 449

Containerd容器技术详解

Containerd 的架构是 modularity(模块化)和可扩展性的体现,它被设计为一个轻量级、高度可定制的容器运行时。可以看出 Containerd 采用的也是 C/S 架构,服务端通过 unix domain socket 暴露低层的 gRPCAPI 接口出去,客户端通过这些 API 管理节点上的容器,每个 Containerd 只负责一台机器,Pull 镜像,对容器的操作(启动、停止等),网络,存储都是由 Containerd 完成。具体运行容器由 runc 负责。

king05yh的博客 1445
上一篇: Linux面试题(总结最全面的面试题)
下一篇: 配置FTP服务器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值