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

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 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                打印版本

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值