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即可形成条理性笔记。