Containerd

一、Containerd 概述

  1. 什么是 Containerd

    • 是一个开源的容器运行时,提供标准化方式管理容器生命周期。
    • 主要特点和功能包括容器生命周期管理、标准化接口、镜像管理、插件体系结构、跨平台支持、与 Kubernetes 集成、安全性和隔离。
    • 为容器生态系统发展提供稳定可靠基础,在容器管理和插件支持等方面提供丰富功能。
  2. 起源与背景

    • 起源于 Docker 项目,Docker 引擎拆分为多个组件,其中关键组件是 Containerd。
    • Docker 架构拆分后,Containerd 被定位为核心容器运行时,并贡献给 CNCF。
    • 遵循 OCI 规范,可与符合该规范的工具和运行时互操作,可作为独立容器运行时与多种工具集成。

二、Containerd 架构

  1. 架构概述

    • 采用 C/S 架构,服务端通过 unix domain socket 暴露低层的 gRPC API 接口,客户端通过这些 API 管理节点上的容器。
    • 解耦为不同组件,每个组件由多个模块协作完成,以插件形式集成到 Containerd 中。
  2. 核心组件解析

    • Storage(存储)

      • Content:存储容器镜像的实际数据,包括文件系统层和元数据。
      • Snapshot:存储容器的快照数据,允许容器共享相同的文件系统层以提高效率。
      • Diff:存储容器文件系统层之间的差异,用于保存变更。
    • Metadata(元数据)

      • Images:存储容器镜像的元数据,包括标签、大小、创建时间等,用于管理和操作镜像。
      • Containers:存储容器的元数据,包括状态、配置信息、网络设置等,用于管理容器生命周期。
    • Runtime(运行时)

      • Tasks:包含容器内的进程组,与 Shim 一起工作维护容器状态。
      • Events:记录容器的各种事件,如创建、启动、停止等,用于监控和日志记录。

三、安装配置 Containerd

  1. 安装 Containerd

    • 执行一系列命令准备系统环境,添加软件源信息,然后安装 containerd.io。
  2. 配置 Containerd

    • 生成配置文件,使用containerd config default获取默认配置并写入/etc/containerd/config.toml
    • 配置镜像加速,在配置文件中添加阿里云的镜像源。
    • 启动服务,使用systemctl命令启用并启动 containerd。

四、Containerd 基本操作

  1. 镜像类操作

    • 拉取镜像:使用ctr images pull命令下载镜像。
    • 查看镜像:使用ctr images ls查看本地镜像。
    • 检测本地镜像:使用ctr images check查看镜像状态,complete表示完整可用。
    • 重新打标签:使用ctr images tag命令为镜像重新打标签。
    • 删除镜像:使用ctr images rm删除镜像。
    • 镜像挂载到主机目录:使用ctr images mount将镜像挂载到宿主机目录。
    • 镜像从主机目录卸载:使用ctr images unmount卸载挂载的镜像。
    • 镜像导出:使用ctr images export将镜像保存成文件,遇到报错可通过删除镜像、重新拉取并导出解决。
    • 镜像导入:使用ctr images import将文件加载为镜像。
  2. 容器类操作

    • 创建容器:使用ctr containers create基于镜像创建容器。
    • 列出容器:使用ctr containers ls列出容器。
    • 查看容器的详细信息:使用ctr containers info查看容器详细信息。
    • 删除容器:使用ctr containers rm删除容器。
  3. 任务类操作

    • 启动容器:使用ctr task start启动容器,可使用-d参数放入后台。
    • 查看容器:使用ctr task ls查看容器任务状态。
    • 进入容器里面:使用ctr task exec进入容器,需指定--exec-id参数且唯一。
    • 暂停容器:使用ctr task pause暂停容器。
    • 恢复容器:使用ctr task resume恢复容器。
    • 杀死容器:使用ctr task kill杀死容器,ctr 没有stop容器的功能。
    • 删除任务:使用ctr task rm删除任务,删除任务后仍可利用同名快照启动容器恢复运行。
    • 删除容器:使用ctr container rm删除容器,删除容器后快照也会删除。
    • 获取容器的内存、CPU 和 PID 的限额与使用量:使用ctr task metrics获取相关信息。
    • 查看容器中所有进程在宿主机中的 PID:使用ctr task ps查看容器中进程在宿主机的 PID。
  4. 其他操作

    • 插件
      • 插件可扩展 Containerd 功能,包括 Shim、Snapshotter、Task、Image、Content Store 等类型。
      • 插件化设计使 Containerd 能适应不同场景,可根据需求定制和扩展。
      • 使用ctr plugins ls列出当前所有插件。
    • 命名空间
      • 命名空间是 Linux 内核特性,用于隔离资源和进程视图。
      • Containerd 利用 PID、Network、Mount、UTS、IPC、User 等命名空间实现容器隔离。
      • 使用ctr ns ls查看命名空间,使用ctr ns create创建命名空间,使用ctr ns rm删除命名空间,操作时可使用-n指定命名空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值