containerd常用命令
chililopp 2024-09-05 09:37:01 阅读 69
上回书说到k8s1.24版本为什么弃用docker而选择containerd作为容器运行时,这回我就来深入学习一下containerd,先从常用命令开始;
一、containerd常用基础命令
首先是containerd常用的基础命令,包括开启、关闭、查看状态等:
<code> systemctl status containerd #查看containerd状态
systemctl start containerd #开启containerd
systemctl stop containerd #关闭containerd
systemctl restart containerd #重启containerd
systemctl enable containerd #将containerd设置为开机自启动
containerd help #查看containerd帮助
containerd version #查看containerd版本
二、docker常用操作命令:
通过查看containerd命令帮助,可以知道
ctr --help #查看containerd命令帮助
containerd常用的操作命令格式为:
ctr [global options] command [command options] [arguments...]
command命令选项如下:
命令 | 说明 |
plugins, plugin | 提供有关容器插件的信息 |
version | 打印客户端和服务器的版本 |
containers, c, container | 容器管理 |
content | 内容管理 |
events, event | 显示容器事件 |
images, image, i | 镜像管理 |
leases | 租约管理 |
namespaces, namespace, ns | 命名空间管理 |
pprof | 为 containerd 提供 golang pprof 输出 |
run | 运行容器 |
snapshots, snapshot | 快照管理 |
tasks, t, task | 任务管理 |
install | 安装package |
oci | oci工具 |
deprecations | |
shim | 直接与shim交互 |
help, h | 显示命令列表或一个命令的帮助 |
global options选项如下:
选项 | 说明 |
--debug | 打开日志调试 |
--address value, -a value | containerd的GRPC服务地址
默认 "/run/containerd/containerd.sock"
|
--timeout value | ctr命令超时时间 |
--connect-timeout value | 连接到容器超时 |
--namespace value, -n value | 命名空间与命令一起使用
默认 "default"
|
--help, -h | 帮助 |
--version, -v | 版本 |
三、docker常用操作命令实践
1.查看containerd命名空间
<code>ctr namespace ls #查看containerd命名空间
命名空间 namespace 来于指定类似于工作空间的隔离区域。
2.查看containerd的镜像
<code>ctr images ls
因为没有指定namespace,所以查看的是默认命名空间下的镜像;
<code>ctr -namespace=moby images ls
查看指定命名空间moby下的镜像
3.拉取containerd的镜像
<code>ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/pause-amd64:3.2
指定k8s.io为命名空间拉取pause-amd64:3.2的镜像
4.删除containerd的镜像
<code>ctr -n k8s.io images rm sha256:80d28bedfe5dec59da9ebf8e6260224ac9008ab5c11dbbe16ee3ba3e4439ac2c
删除k8s.io下的镜像
5.导出containerd的镜像
<code>ctr -n k8s.io images export pause.tar.gz registry.aliyuncs.com/google_containers/pause-amd64:3.2
6.导入containerd的镜像
<code>ctr -n k8s.io image import pause.tar.gz
7.标记containerd的镜像
<code>ctr -n k8s.io images tag registry.aliyuncs.com/google_containers/pause-amd64:3.2 pause:3.2
我经过测试发现docker save -o 命令导出来的镜像可以用ctr images import 导出;同理ctr images export导出来的镜像也可以有docker load 还原;
所以两者应该是通用的;
8.运行containerd的容器
<code>ctr -n k8s.io run -d docker.io/library/centos:latest centos_k8s
在后台运行一个centos镜像的容器,名称叫做centos_k8s;
9.查看运行容器的task
在docker里面,container的概念被弱化,所以docker里面的容器应该是containers和task整合在一起的;
在containerd中,containers是镜像实例化的一个虚拟环境,提供一个磁盘、模拟空间;而task是一个初始化进程,负载运行这个虚拟环境;
10.启动指定容器的task
<code>ctr -n k8s.io task start -d centos_k8s
11.进入指定容器的task
<code> ctr -n k8s.io task exec --exec-id 3118 -t centos_k8s /bin/bash
12.删除指定容器的task
<code>ctr -n k8s.io task rm -f centos_k8s
13.停止指定容器的task
<code>ctr -n k8s.io task kill --signal 9 centos_k8s
14.查看容器
15.删除容器
<code> ctr -n k8s.io c rm centos
删除容器以前需要将task删除,不然会报以下错误:
四、docker与containerd常用命令对比
很明细docker与containerd命令类型,但又有不同,我总结了一下docker与containerd命令的对比:
说明 | docker命令 | containerd命令 |
查看本地镜像 | docker images | ctr images ls |
拉取镜像 | docker pull imagename | ctr images pull imagename |
推送镜像 | docker push imagename | ctr images push imagename |
给镜像打标签 | docker tag imagename tagname | ctr images tag imagename tagname |
导出镜像 | docker save filename imagename | ctr images export filename imagename |
导入镜像 | docker load filename | ctr image import filename |
运行并创建容器 | docker run [options] imagename commond | ctr run [options] imagename
containername
|
进入容器 | docker exec [options] names commond | ctr task exec [options] names commond |
查看运行的容器 | docker ps | ctr task list |
删除容器 | docker rm [options] names | 1.ctr task rm -f names
2. ctr c rm -f names
|
ps:docker可以基于dockerfile构建对象,但是ctr命令无法构建对象;
我是chililopp,正在学习k8s,之后如果有新的总结或者体验也会发出来,如果有说的不对的地方,还请指点,十分感谢阅读!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。