Container 命令ctr、crictl 命令使用说明

news/2025/2/7 8:55:19/

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

ctr是containerd的一个客户端工具

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

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

crictl image list  
等效于
ctr -n=k8s.io image list

镜像

一、ctr 命令使用

[root@k8s-node02 k8s-install]# ctr --help
USAGE:ctr [global options] command [command options] [arguments...]COMMANDS:plugins, plugin            提供有关容器插件的信息,例如:ctr plugin lsversion                    版本信息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 toolsshim                       与shim直接交互help, h                    Shows a list of commands or help for one commandGLOBAL 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                打印版本

Container 命令 ctr,crictl 的用法
版本:ctr containerd.io 1.4.3
containerd 相比于 docker , 多了 namespace 概念, 每个 image 和 container 都会在各自的 namespace 下可见, 目前 k8s 会使用 k8s.io 作为命名空间~~

1.1、查看 ctr image 可用操作

ctr image list, ctr i list , ctr i ls

1.2、镜像标记 tag

ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
注意: 若新镜像reference 已存在, 需要先删除新reference, 或者如下方式强制替换
ctr -n k8s.io i tag --force registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

1.3、删除镜像

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

1.4、拉取镜像

ctr -n k8s.io i pull -k k8s.gcr.io/pause:3.2

1.5、推送镜像

ctr -n k8s.io i push -k k8s.gcr.io/pause:3.2

1.6、导出镜像

ctr -n k8s.io i export pause.tar k8s.gcr.io/pause:3.2

1.7、导入镜像

ctr -n k8s.io i import pause.tar

1.8、查看容器相关操作

ctr c

1.9、运行容器

  • –null-io: 将容器内标准输出重定向到 / dev/null
  • –net-host: 主机网络
  • -d: 当 task 执行后就进行下一步 shell 命令, 如没有选项, 则会等待用户输入, 并定向到容器
  • –mount 挂载本地目录或文件到容器
  • –env 环境变量

ctr -n k8s.io run --null-io --net-host -d \
–env PASSWORD="123456"
–mount type=bind,src=/etc,dst=/host-etc,options=rbind:rw

1.10、容器日志

注意: 容器默认使用 fifo 创建日志文件, 如果不读取日志文件, 会因为 fifo 容量导致业务运行阻塞

  • 如要创建日志文件, 建议如下方式创建:

ctr -n k8s.io run --log-uri file:///var/log/xx.log

二、ctr 和 docker 命令比较

常用命令对比:

Containerd 命令Docker 命令描述
ctr task lsdocker ps查看运行容器
ctr image lsdocker images获取 image 信息
ctr image pull pausedocker pull pausepull 应该 pause 镜像
ctr image push pause-testdocker push pause-test改名
ctr image import pause.tardocker load 镜像导入本地镜像
ctr run -d pause-test pausedocker run -d --name=pause pause-test运行容器
ctr image tag pause pause-testdocker tag pause pause-testtag 应该 pause 镜像

主要命令对比:

命令dockerctr(containerd)crictl(kubernetes)
查看运行的容器docker psctr task ls/ctr container lscrictl ps
查看镜像docker imagesctr image lscrictl images
查看容器日志docker logscrictl logs
查看容器数据信息docker inspectctr container infocrictl inspect
查看容器资源docker statscrictl stats
启动 / 关闭已有的容器docker start/stopctr task start/killcrictl start/stop
运行一个新的容器docker runctr run无(最小单元为 pod)
修改镜像标签docker tagctr image tag
创建一个新的容器docker createctr container createcrictl create
导入镜像docker loadctr image import
导出镜像docker savectr image export
删除容器docker rmctr container rmcrictl rm
删除镜像docker rmictr image rmcrictl rmi
拉取镜像docker pullctr image pullctictl pull
推送镜像docker pushctr image push
容器内部执行命令docker execcrictl exec

三、crictl 命令

3.1、crictl 配置

root@k8s-node-0001:~$ cat /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock

3.2、列出业务容器状态

crictl inspect ee20ec2346fc5

3.3、查看运行中容器

root@k8s-node-0001:~$ crictl pods
POD ID              CREATED             STATE               NAME                                                     NAMESPACE           ATTEMPT             RUNTIME
b39a7883a433d       10 minutes ago      Ready               canal-server-quark-b477b5d79-ql5l5                       mbz-alpha           0                   (default)

3.4、打印某个固定 pod

root@k8s-node-0001:~$ crictl pods --name canal-server-quark-b477b5d79-ql5l5
POD ID              CREATED             STATE               NAME                                 NAMESPACE           ATTEMPT             RUNTIME
b39a7883a433d       12 minutes ago      Ready               canal-server-quark-b477b5d79-ql5l5   mbz-alpha           0                   (default)

3.5、打印镜像

root@k8s-node-0001:~$ crictl images
IMAGE                                                          TAG                             IMAGE ID            SIZE
ccr.ccs.tencentyun.com/koderover-public/library-docker         stable-dind                     a6e51fd179fb8       74.6MB
ccr.ccs.tencentyun.com/koderover-public/library-nginx          stable                          588bb5d559c28       51MB
ccr.ccs.tencentyun.com/koderover-public/nsqio-nsq              v1.0.0-compat                   2714222e1b39d       22MB

3.6、只打印镜像 ID

root@k8s-node-0001:~$ crictl images -q
sha256:a6e51fd179fb849f4ec6faee318101d32830103f5615215716bd686c56afaea1
sha256:588bb5d559c2813834104ecfca000c9192e795ff3af473431497176b9cb5f2c3
sha256:2714222e1b39d8bd6300da72b0805061cabeca3b24def12ffddf47abd47e2263
sha256:be0f9cfd2d7266fdd710744ffd40e4ba6259359fc3bc855341a8c2adad5f5015

3.7、打印容器清单

root@k8s-node-0001:~$ crictl ps -a
CONTAINER           IMAGE               CREATED             STATE               NAME                     ATTEMPT             POD ID
ee20ec2346fc5       c769a1937d035       13 minutes ago      Running             canal-server             0                   b39a7883a433d
76226ddb736be       cc0c524d64c18       34 minutes ago      Running             mbz-rescue-manager       0                   2f9d48c49e891
e2a19ff0591b4       eb40a52eb437d       About an hour ago   Running             export                   0                   9844b5ea5fdbc

3.8、打印正在运行的容器清单

root@k8s-node-0001:~$ crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                   ATTEMPT             POD ID
ee20ec2346fc5       c769a1937d035       13 minutes ago      Running             canal-server           0                   b39a7883a433d

3.9、容器上执行命令

root@k8s-node-0001:~$ crictl exec -i -t ee20ec2346fc5 ls
app.sh  bin  canal-server  health.sh  node_exporter  node_exporter-0.18.1.linux-arm64

3.10、获取容器的所有日志

root@k8s-node-0001:~$ crictl logs ee20ec2346fc5
DOCKER_DEPLOY_TYPE=VM
==> INIT /alidata/init/02init-sshd.sh
==> EXIT CODE: 0
==> INIT /alidata/init/fix-hosts.py

3.11、获取最近的 N 行日志

root@k8s-node-0001:~$ crictl logs --tail=2 ee20ec2346fc5
start canal successful
==> START SUCCESSFUL ...

3.12、拉取镜像

crictl pull busybox

参考:ctr命令的基本使用与技巧_docker_weixin_44416039-K8S/Kubernetes


http://www.ppmy.cn/news/1570029.html

相关文章

ecovadis评级未来方向

EcoVadis评级作为企业可持续发展的重要评估工具,未来发展方向可能集中在以下几个方面: 1. 评估标准升级 更严格的指标:随着全球对可持续发展的重视,EcoVadis可能会提高评估标准,纳入更多环境、社会和治理(…

在Debian 12上安装VNC服务器

不知道什么标题 可以看到这个文章是通过豆包从国外网站copy的,先这样写着好了,具体的我有时间再补充,基本内容都在这里了。 在Debian 12上安装VNC服务器 简介 VNC(Virtual Network Computing,虚拟网络计算&#xf…

阿里 Java 岗个人面经分享(技术三面 + 技术 HR 面):Java 基础 +Spring+JVM+ 并发编程 + 算法 + 缓存

技术一面 20 分钟 1、自我介绍 说了很多遍了,很流畅捡重点介绍完。 2、问我数据结构算法好不好 挺好的(其实心还是有点虚,不过最近刷了很多题也只能壮着胆子充胖子了) 3、找到单链表的三等分点,如果单链表是有环的…

ROS2从入门到精通3-1:详解urdf语法并自定义机器人

目录 0 专栏介绍1 urdf文件是什么?2 urdf基本语法2.1 robot标签2.2 link标签2.2.1 visual标签2.2.2 collision标签2.2.3 inertial标签2.3 joint标签3 案例一:分别生成球体的机器人部件4 案例二:自定义机器人5 附录:常用工具5.1 检查urdf语法5.2 可视化urdf0 专栏介绍 本专…

2.6学习总结

洛谷1241代码&#xff1a; 应用栈后进先出的特性解决 &#xff08;只有48&#xff0c;未ac&#xff09; #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 1000 typedef struct {char data[MAX_SIZE];int top; } Stack; //初…

3NF讲解

3NF讲解 3NF&#xff08;第三范式&#xff09;是数据库设计中的一种规范化方法&#xff0c;目的是消除数据冗余和避免数据异常。它帮助数据库保持高效&#xff0c;灵活和一致性。理解3NF的关键点在于它依赖于前两个范式&#xff08;1NF和2NF&#xff09;的基础。 1. 第一范式…

深度学习之“线性代数”

线性代数在深度学习中是解决多维数学对象计算问题的核心工具。这些数学对象包括标量、向量、矩阵和张量&#xff0c;借助它们可以高效地对数据进行操作和建模。以下将详细介绍这些数学对象及其在深度学习中的典型用途。 数学对象概述 标量 标量是最简单的数学对象&#xff0…

C++底层学习预备:模板初阶

文章目录 1.编程范式2.函数模板2.1 函数模板概念2.2 函数模板原理2.3 函数模板实例化2.3.1 隐式实例化2.3.2 显式实例化 2.4 模板参数的匹配原则 3.类模板希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 进入STL库学习之前我们要先了解有关模板的…