k8s早1.24后放弃docker,并把containerd作为运行时组件,containerd 调用链更短,组件更少,更稳定,占用节点资源更少

ctr是containerd的一个客户端工具

crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序

crictl 使用命名空间 k8s.io,即:

crictl image list
等效于
ctr -n=k8s.io image list
镜像
推送/拉取镜像:

注意:需要填写完整的镜像地址,如docker.io/library/[镜像名称]:[tag]

ctr images push [镜像名称]:[tag]
ctr images pull [镜像名称]:[tag]
导出/导入镜像:

ctr image export [镜像文件名] [镜像地址]
ctr image import [镜像文件名]
部分命令对比:

命令 docker ctr(containerd) crictl(kubernetes)
查看运行的容器 docker ps ctr task ls/ctr container ls crictl ps
查看镜像 docker images ctr image ls crictl images
查看容器日志 docker logs 无 crictl logs
查看容器数据信息 docker inspect ctr container info crictl inspect
查看容器资源 docker stats 无 crictl stats
启动/关闭已有的容器 docker start/stop ctr task start/kill crictl start/stop
运行一个新的容器 docker run ctr run 无(最小单元为pod)
修改镜像标签 docker tag ctr image tag 无
创建一个新的容器 docker create ctr container create crictl create
导入镜像 docker load ctr image import 无
导出镜像 docker save ctr image export 无
删除容器 docker rm ctr container rm crictl rm
删除镜像 docker rmi ctr image rm crictl rmi
拉取镜像 docker pull ctr image pull ctictl pull
推送镜像 docker push ctr image push 无
在容器内部执行命令 docker exec 无 crictl exec
[root@k8s-node02 k8s-install]# ctr --help
USAGE:
ctr [global options] command [command options] [arguments...]

COMMANDS:
plugins, plugin 提供有关容器插件的信息,例如:ctr plugin ls
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 安装一个新的包
oci OCI tools
shim 与shim直接交互
help, h Shows a list of commands or help for one command

GLOBAL OPTIONS:
--debug 打开日志的调试输出
--address value, -a value containerd的GRPC服务器地址 (default: "/run/containerd/containerd.sock") [$CONTAINERD_ADDRESS]
--timeout value CTR命令的总超时时间(默认值:0)
--connect-timeout value 连接到容器的超时时间(默认值:0)
--namespace value, -n value 命名空间与命令一起使用 (default: "default") [$CONTAINERD_NAMESPACE]
--help, -h show help
--version, -v 打印版本
查看镜像

ctr images list 或 ctr i ls
# 查看指定命名空间下的镜像
ctr -n k8s.io images list
命名空间查看

ctr namespaces list 或 ctr ns list
镜像标记

ctr -n k8s.io images tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
删除镜像

ctr -n k8s.io images rm k8s.gcr.io/pause:3.2
拉取镜像

ctr images pull docker.io/library/redis:latest
# 指定命名空间并且检查镜像是否有效
ctr -n k8s.io images pull -k k8s.gcr.io/pause:3.2
导出镜像

ctr -n k8s.io images export pause.tar k8s.gcr.io/pause:3.2
导入镜像

不支持 build,commit 镜像

ctr -n k8s.io i import pause.tar
运行容器

ctr -n k8s.io run --null-io --net-host -d –env PASSWORD=$drone_password –mount type=bind,src=/etc,dst=/host-etc,options=rbind:rw –mount type=bind,src=/root/.kube,dst=/root/.kube,options=rbind:rw $image sysreport bash /sysreport/run.sh


–null-io: 将容器内标准输出重定向到/dev/null
–net-host: 主机网络
-d: 当task执行后就进行下一步shell命令,如没有选项,则会等待用户输入,并定向到容器内
查看容器

ctr containers list 或 ctr c ls
# 指定命名空间
ctr -n k8s.io c ls
任务查看

ctr -n k8s.io tasks list
停止容器

kill -a -s 9 {id}
创建静态容器

$ ctr container create docker.io/library/nginx:latest nginx
$ ctr task ls
TASK PID STATUS

开启任务

方式一:

# 开启任务
[root@k8s-node02 k8s-install]# ctr task start -d nginx
[root@k8s-node02 k8s-install]
# 查看进程列表
[root@k8s-node02 k8s-install]# ctr task list
TASK PID STATUS
nginx 0 RUNNING
#查看指定进程
[root@k8s-node02 k8s-install]# ctr task ps nginx
PID INFO
3679 -
3718 -
3719 -
# 查看本机对应的进程
[root@k8s-node02 k8s-install]# ps -ef|grep 3679
root 3679 3659 0 15:27 ? 00:00:00 nginx: master process nginx -g daemon off;
101 3718 3679 0 15:27 ? 00:00:00 nginx: worker process
101 3719 3679 0 15:27 ? 00:00:00 nginx: worker process
root 3740 1111 0 15:29 pts/0 00:00:00 grep --color=auto 3679

# ctr task exec 进入容器,id随便写就行,需要将其唯一
[root@k8s-node02 k8s-install]# ctr task exec --exec-id 1 -t nginx /bin/sh
方式二:(一键开启)

[root@localhost runc]# ctr run -d --net-host docker.io/library/nginx:latest nginx
[root@localhost runc]# ctr task exec --exec-id $RANDOM -t nginx /bin/sh
删除镜像

ctr -n k8s.io images rm k8s.gcr.io/pause:3.2

ctr命令的基本使用与技巧的更多相关文章

  1. Linux学习之常用网络通信命令与shell简单应用技巧(四)

    (一)常用网络通信命令 (1)ping命令 (2)write命令 (3)wall命令 (4)ifconfig命令 (5)shutdown命令 (6)reboot命令 (二)shell简单应用技巧 (1 ...

  2. mount命令的用法,以及技巧光盘镜像文件、移动硬盘及U盘的方法

    本文介绍mount命令的用法,以及技巧光盘镜像文件.移动硬盘及U盘的方法. 一,挂接命令(mount) 挂接(mount)命令的使用方法. 命令格式: 复制代码 代码如下: mount [-t vfs ...

  3. 深度技术Win7系统利用diskpart命令实现硬盘分区的技巧

    转自:http://www.xitongcheng.com/jiaocheng/win7_article_2491.html 1. 深度技术Win7系统利用diskpart命令实现硬盘分区的技巧分享给 ...

  4. Linux常用命令(第二版) --Shell应用技巧

    Shell应用技巧 小技巧: 1.命令补全功能: <Tab>键 2.清屏: Ctrl+l 3.删除光标前所有内容: Ctrl+u 4.命令历史记录: history 这时:  !histo ...

  5. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

  6. linux下命令行操作快捷键及技巧

      历史相关命令 !!:执行上一条命令 !num:执行历史命令中第num条命令 !-num:执行历史命令中倒数第num条命令 !?string?:执行最近一条包含有string字符串的命令 Ctrl+ ...

  7. mysql命令化操作实用小技巧

    ★1.问:如果我的mysql数据库服务器程序在D:\program files\phpstudy\mysql,里,那么我该怎么在cmd命令状态下使用它?      进入cmd状态后,系统默认在当前用户 ...

  8. cat命令常用的13个技巧

    在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...

  9. 关于shell命令的一些用法和技巧

    #!/bin/bash #第一种写法 #date=`date "+%Y-%m-%d %H:%M:%S"` #第二种写法 date=$(date "+%Y-%m-%d %H ...

  10. Linux Touch命令的8种使用技巧

    Linux touch命令不仅可以用于在Linux上创建空文件. 您可以使用它来更改现有文件的时间戳,包括其访问权限和修改时间. 本文介绍了8种可以通过Linux终端使用touch命令的方案. 我们在 ...

随机推荐

  1. python安装pandas+pytz

    如下图所示,在安装pandas的过程中,发现他还要安装pytz这个包.我不想等他自己下载,因为很容易出错,所以我就先下载了pytz这个包,然后安装完毕,再去安装pandas这个包. 首先呢先登录这个网 ...

  2. 基于 Nginx 的大型互联网集群架构与实战方案

    1. Nginx 负载均衡基础配置 首先,搭建一个基础的 Nginx 负载均衡器,用于将流量分发到多个后端服务器上. 步骤 1.1:安装 Nginx 在每台要作为负载均衡器的服务器上,安装 Nginx ...

  3. innerText 和 inner HTML 的区别

    获取内容时: innerText会自动删除空格和换行:innerHTML会保留空格和换行: <body> <div>获 取内 容</div> <script& ...

  4. 理解 keep-alive

    keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 : 对应两个钩子函数 activated 和 deactivated ,当组件被激活时,触发钩子函数 act ...

  5. 华为IPv6 GRE隧道

    IPv6 over IPv4 GRE封装隧道 实验目标: 该实验参考了华为官网案例配置 https://support.huawei.com/enterprise/zh/doc/EDOC1000097 ...

  6. spring注解@PostConstruct

    该注解可以实现在运行工程时,自动运行该注解下的方法: @PostConstruct是java5的时候引入的注解,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为 ...

  7. Trie树练习题

    Trie树练习题 T1 「一本通 2.3 例 2」The XOR Largest Pair 在给定的 \(N\) 个整数\(A_1,A_2,...A_N\)中选出两个进行异或运算,得到的结果最大是多少 ...

  8. 1000%增长!我仅用一个小时搞定!AI智能体+AI小程序=MVP王炸组合!

    前言 在万圣节的前一晚上10月30日,一位运营朋友跟我说了个点子万圣节头像生成器,然后大概给我分析了下整体思路,于是我用扣子Coze平台(coze.cn)搭建了一个AI智能体整个过程花了一个小时就搞定 ...

  9. OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙

    前言   对于图像拼接,前面探讨了通过基于Stitcher进行拼接过渡和基于特征点进行拼接过渡,这2个过渡的方式是摄像头拍摄角度和方向不应差距太大.  对于特定的场景,本身摄像头拍摄角度差距较大,拉伸 ...

  10. ABC240Ex Sequence of Substrings

    ABC240Ex Sequence of Substrings LIS 的好题改编. 约定 \(S(l,r)\) 为字符串 \(s\) 中第 \(l\) 位到底 \(r\)​ 位. \(S(l,r)& ...