containerd的部署与简单使用

  • containerd

    • containerd是一个开源的容器运行时,提供了一种标准化的方式来管理容器的生命周期。最初该项目隶属于docker,后来贡献给CNCF(云原生计算基金会)

      • 随着docker的发展,为了保持docker的轻量化,docker开发者团队对docker做了拆分模块化设计,containerd就是重要的核心组件。

    • containerd的主要特点和功能

      • 容器的生命周期管理

        • 包括创建运行暂停恢复停止删除等操作。

      • 标准化接口

        • 提供了一个标准化的容器接口,使得能够兼容更多的容器技术,例如k8s,docker等

      • 镜像管理

        • 支持镜像的拉取,推送,保存等,使用OCI(开源容器倡导)规范镜像格式。

      • 插件体系

        • 具备很多可扩展的插件

          • ctr plugins ls

            • 列出所有插件

      • 跨平台支持

        • 在不同的操作系统上运行

      • 与k8s集成

        • 是k8s的默认容器运行时

      • 安全性与隔离

        • 通过namespace来进行隔离

    • 架构图

    • 核心组件架构图

      • 三大部分

        • storage

          • content(内容)

            • 存储了实际的镜像数据,实际的镜像内容。

          • snapshot(快照)

            • 支持快照,每个容器都至少有一个快照

          • diff(差异)

            • 当修改文件系统时,会在原有的基础之上创建一个差异曾保存信息,类似于dockerfile创建时的分层。

        • metadata

          • images

            • 保存镜像元数据,比如镜像名称,大小,id等

          • containers

            • 保存容器的元数据,比如容器名称,大小,id,时间等。

        • runtimes

          • tasks(任务)

            • 负责与容器运行相关联,与shim插件共同工作

              • shim插件:隔离容器的生命周期管理与容器的实际运行环境。功能:生命周期管理,隔离,扩展性。

          • events(事件)

            • 记录了容器的各种事件,如创建,启动,停止等。

    • containerd的部署与使用

      • 部署

        • 选择阿里的仓库

          • # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE sudo yum makecache fast

        • 安装

          • yum -y install container.io

        • 生成配置文件

          • mkdir -p /etc/containerd containerd config default > /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"]

            • 注意第一行不要重复

        • 之后启动

          • systemctl enable containerd --now

        • ctr version

          • 查看版本信息,本案例以1.6.3为例

      • 使用

        • 镜像类操作

          • 拉取

            • ctr images pull 镜像名称

          • 查看

            • ctr images ls

            • status为complete(完整的)表示该镜像可用

          • 修改标签(改名)

            • ctr images tag 老标签 新标签

              • 注意顺序

          • 删除镜像

            • ctr images rm 镜像名

          • 镜像挂载(方便研究)

            • ctr images mount 镜像名 挂载路径

          • 镜像卸载

            • ctr images unmount 挂载路径

            • 如果显示设备忙,可用fuser 挂载路径 显示进程编号,杀死在尝试卸载。

          • 镜像导出

            • ctr images export --all-planforms 导出文件名 镜像名称

              • 注意顺序

            • 如果报错找不到,删除镜像重建在导出

              • root@localhost ~]# ctr images rm nginx:v1 root@localhost ~]# ctr images pull --all-platforms nginx:v1 root@localhost ~l#ctr images export --all-platforms nginx latest.tar nginx:v1

          • 镜像导入

            • ctr images import 文件名

        • 容器类操作

          • 创建容器

            • ctr containers create 镜像名 新容器名

          • 列出容器

            • ctr containers ls

          • 查看容器信息

            • ctr containers info 容器名

          • 删除容器

            • ctr containers rm 容器名

        • 任务类操作(容器运行)

          • 启动容器

            • 要确保容器先有

            • ctr task start -d 容器名

              • 以后台方式运行

          • 查看容器

            • ctr task ls

          • 进入容器

            • ctr task exec --exec-id 0 -t 容器名 解释器,sh

              • --exec-id id不重复即可

          • 暂停容器

            • ctr task pause 容器名

          • 恢复容器

            • ctr task resume 容器名

          • 杀死容器

            • ctr task kill 容器名

          • 删除任务

            • ctr task rm 容器名

            • 要彻底删除一个容器需要的操作

              • 停掉任务,删除任务,删除容器,删除快照

          • 查看任务消耗的资源

            • ctr task metrics 容器名

          • 查看容器进程pid

            • ctr task ps 容器名

              • 这些进程也会体现在宿主机上

        • 插件操作

          • 常见插件

            • shim插件

              • 管理容器生命周期

            • snapshotter

              • 快照

            • task(任务)

            • image

              • 镜像操作,拉取删除,推送

          • 查看插件

            • ctr plugins ls

          • 如果需要启用,需要在配置文件中添加并正确配置

        • 命名空间

          • containerd利用命名空间增加隔离性

          • 查看命名空间

            • ctr ns ls

          • 创建命名空间

            • ctr ns create 空间名

          • 删除命名空间

            • ctr ns rm 空间名

          • 在执行操作时可以加如-n 指定命名空间去创建资源,需要注意资源的在命名空间是独立的。

全部复制到xmind即可形成条理性笔记。 

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值