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

云原生技术与应用-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.dtcms.com/a/278881.html

相关文章:

  • MySQL数据库的基础操作
  • AI驱动的软件工程(下):AI辅助的质检与交付
  • nvidia-smi命令参数解释
  • 机器学习(ML)、深度学习(DL)、强化学习(RL):人工智能的三驾马车
  • 外星人电脑Alienware Aurora R11原装出厂OEM预装Windows10系统
  • 自动驾驶数据仓库:时间片合并算法。
  • 【React Native】ScrollView 和 FlatList 组件
  • 基于ASP.NET+SQL Server实现(Web)排球赛事网站
  • Java文件操作
  • PTKQuery
  • 大规模测试自动化测试指南
  • day9 串口通信
  • 如何单独安装设置包域名
  • Kafka Broker源码解析(上篇):存储引擎与网络层设计
  • Java HTTP应用开发:从基础到实战
  • C语言-流程控制
  • 使⽤Pytorch构建⼀个神经⽹络
  • Linux 消息队列接收与处理线程实现
  • 【HTTP版本演变】
  • 考完数通,能转云计算/安全方向吗?转型路径与拓展路线分析
  • Elasticsearch9.x核心架构概述
  • Redis7持久化
  • 【postgresql数据库实现表的树结构查询】
  • 项目进度中间节点缺失,如何精细化分解任务
  • MIPI DSI(三) MIPI DSI 物理层和 D-PHY
  • 《大数据技术原理与应用》实验报告三 熟悉HBase常用操作
  • 现代数据平台能力地图:如何构建未来数据平台的核心能力体系
  • 为什么ER-GNSS/MINS-01能重新定义高精度导航?
  • vscode 源码编译
  • 创客匠人:创始人 IP 打造的系统化思维,是知识变现的底层逻辑