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

云原生技术与应用-Containerd容器技术详解

目录

一.Containerd概述

  1.什么是containerd

  2.Containerd的起源与背景

二.Containerd架构

  1.Containerd架构概述

  2.核心组件解析

三.安装配置Containerd

  1.安装Containerd

  2.配置Containerd

四.Containerd基本操作

  1.镜像类操作

  2.容器类操作

  3.任务类操作

  4.其他操作


一.Containerd概述

1.什么是Containerd

    Containerd 是一个开源的容器运行时(container runtime),主要用于管理容器的生命周期,包括容器的创建、启动、停止、删除等核心操作。它最初是 Docker 引擎的一部分,2017 年被分离出来并捐赠给 Cloud Native Computing Foundation(CNCF),成为独立的开源项目,目前已成为云原生生态中容器运行时的重要标准之一。

2.Containerd的起源与背景

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

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

   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 生态系统,还为整个容器领域提供了一个通用的、可扩展的容器运行时。

二.Containerd架构

1.Containerd架构概述

   Containerd 的架构是 modularity(模块化)和可扩展性的体现,它被设计为一个轻量级、高度可定制的容器运行时。

2.核心组件解析

┌───────────────────────────────────────────────────────────┐
│                        用户工具层                          │
│  (Docker CLI, Kubernetes CRI, 其他自定义客户端)           │
└───────────────────────────────────┬───────────────────────┘│ gRPC API
┌───────────────────────────────────▼───────────────────────┐
│                        containerd 守护进程                  │
│  ┌───────────────────┐  ┌─────────────────┐  ┌───────────┐  │
│  │    任务管理器      │  │    内容存储      │  │  快照服务  │  │
│  └───────────────────┘  └─────────────────┘  └───────────┘  │
└───────────────────────────┬─────────────────────────────────┘│ 插件接口
┌───────────────────────────▼─────────────────────────────────┐
│                          插件层                              │
│  ┌────────────┐  ┌───────────┐  ┌───────────┐  ┌──────────┐  │
│  │  CRI 插件   │  │  镜像插件  │  │  存储插件  │  │  事件插件 │  │
│  └────────────┘  └───────────┘  └───────────┘  └──────────┘  │
│                                                               │
│  ┌────────────┐  ┌───────────┐  ┌───────────┐                 │
│  │  日志插件   │  │  网络插件  │  │  运行时插件 │                 │
│  └────────────┘  └───────────┘  └───────────┘                 │
└───────────────────────────┬─────────────────────────────────┘│ 底层接口
┌───────────────────────────▼─────────────────────────────────┐
│                          运行时层                            │
│  ┌────────────┐  ┌───────────────────────┐  ┌──────────────┐  │
│  │   runc     │  │  其他 OCI 运行时 (gVisor, kata) │  │  系统调用 │  │
│  └────────────┘  └───────────────────────┘  └──────────────┘  │
└───────────────────────────┬─────────────────────────────────┘│ Linux 内核
┌───────────────────────────▼─────────────────────────────────┐
│                        操作系统层                            │
│      (namespaces, cgroups, seccomp, 内核功能)                │
└───────────────────────────────────────────────────────────┘
  1. 客户端与 API

    • 通过 gRPC 接口提供服务,支持多种客户端工具(如 Docker CLI、Kubernetes CRI 客户端)。
    • 提供容器、镜像、内容存储等核心资源的管理接口。
  2. 镜像管理

    • 支持从容器 registry 拉取镜像,遵循 OCI 镜像规范。
    • 实现镜像内容的存储与校验(Content Addressable Storage)。
  3. 容器生命周期管理

    • 负责容器的创建、启动、停止、删除等操作。
    • 通过 shim 进程隔离容器与主守护进程,确保稳定性。
  4. 存储与快照

    • 提供分层存储机制,支持联合挂载(Union Mount)。
    • 通过快照服务实现容器文件系统的快速创建与隔离。
  5. 网络与日志

    • 通过 CNI(容器网络接口)插件实现网络配置。
    • 支持多种日志驱动,收集容器运行日志。
  6. 安全机制

    • 集成 seccomp、AppArmor 等安全模块,增强容器隔离。
    • 支持多种运行时(如 runc、gVisor、Kata Containers),满足不同安全需求。
4. 与其他组件的关系
  • 与 Kubernetes 的集成:通过 CRI 插件对接,成为 K8s 默认的容器运行时之一。
  • 与 Docker 的关系:Docker 自 1.11 版本起采用 containerd 作为底层运行时,实现架构解耦。
  • 与 OCI 标准的结合:基于 runc 实现 OCI 运行时规范,确保容器可移植性。

三.安装配置Containerd

1.安装containerd

 

2.配置Containerd

(1)生成配置文件

sudo tee /etc/containerd/config.toml:

tee 命令通常用来读取标准输入,并将其内容写入文件和输出到终端。

/etc/containerd/config.toml 是 containerd 的配置文件路径,这里指定了配置文件的具体位置。

使用 containerd config default 命令获取 containerd 的默认配置信息;
通过管道 | 将这些配置信息传递给 tee 命令;
使 用 sudo tee /etc/containerd/config.toml 以 管 理 员 权 限 创 建 或 覆 盖 /etc/containerd/config.toml 文件,并将之前获取的配置信息写入其中。

 (2)修改配置文件

vim /etc/containerd/config.toml
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

  SystemdCgroup = true

 config_path = "/etc/containerd/certs.d"

 

 (3)启动服务

四.Containerd基本操作

1. 镜像类操作

指定平台拉取镜像

 (2)查看镜像

(3)查看本地镜像

 (4)重新打标签

 (5)删除镜像

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

 (7)镜像从主机目录卸载

ctr images unmount /mnt/

(8) 镜像导出

 (9)镜像导入

 2.容器类操作

(1)创建容器

(2)列出容器

 (3)删除容器

3.任务类操作

(1)启动容器

(2) 查看容器

(3)进入容器里面

 (4)暂停容器

 (5)恢复容器

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

 4.其他操作

列出当前所有的插件

命名空间

查看都有哪些命令空间

创建命名空间

 删除命名空间

    在做操作的时候可以使用-n来指定命名空间,如果不指定表示操作的是默认的命名空间,比如查看k8s.io命名空间的镜像

http://www.xdnf.cn/news/15366.html

相关文章:

  • Android系统的问题分析笔记 - Android上的调试方式 bugreport
  • RAG索引流程中的文档解析:工业级实践方案与最佳实践
  • iOS —— 网易云仿写
  • 大数据系列之:通过trino查询hive表
  • 直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡
  • 在Linux下git的使用
  • 量子计算新突破!阿里“太章3.0”实现512量子比特模拟(2025中国量子算力巅峰)
  • MYOJ_8512:CSP初赛题单1:计算机常识
  • 计算机网络通信的相关知识总结
  • Linux进程优先级机制深度解析:从Nice值到实时调度
  • 图机器学习(1)——图论基础
  • Django Admin 配置详解
  • 【C语言进阶】指针面试题详解(2)
  • 玩转Docker | 使用Docker部署TeamMapper思维导图应用程序
  • 使⽤Pytorch构建⼀个神经⽹络
  • Android Studio C++/JNI/Kotlin 示例 三
  • IDEA实现纯java项目并打包jar(不使用Maven,Spring)
  • Bash vs PowerShell | 从 CMD 到跨平台工具:Bash 与 PowerShell 的全方位对比
  • 单片机(STM32-串口通信)
  • 名片管理系统IV
  • 位置编码类型彩色图解
  • android Perfetto cpu分析教程及案例
  • (5)LangGraph4j框架ReActAgent实现
  • 核电概念盘中异动,中核科技涨停引领板块热度
  • SQL性能调优经验总结
  • HashMap的长度为什么要是2的n次幂以及HashMap的继承关系(元码解析)
  • 持续优化小程序排名,稳定获取搜索流量
  • Bash常见条件语句和循环语句
  • gRPC和http长轮询
  • Python:打造你的HTTP应用帝国