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