首页 > 其他分享 >ctr命令的基本使用与技巧

ctr命令的基本使用与技巧

时间:2024-07-22 15:29:33浏览次数:10  
标签:容器 技巧 ctr 命令 io 镜像 docker k8s

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,命令,io,镜像,docker,k8s
From: https://www.cnblogs.com/exmyth/p/18316090

相关文章

  • 【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(下)
    【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(下)大家好我是寸铁......
  • jstat&jamp命令使用
    进制在线转换工具:https://www.uutils.com/enc/num_hex_convert.htm#google_vignette1jstackjstack简介:jstack是用于生成java虚拟机当前时刻的线程快照。线程快照是当前iava虚拟机内存每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因。......
  • aix基本命令
    lslvlsvglsblkdu-g20210119213721|awk'{sum+=$1};END{printsum}'du-sg*|sort-nr|headhistorywithtimestampfc-tstartsrc-ssshdstopsrc-ssshdlssrc-ssshdchfs-asize=+256M/noteschfs-asize=+256M/optAIX常用的性能监控命令(转)原创......
  • Linux常用命令
    命令格式:命令字[选项][参数]pwd   查看当前工作目录cd切换工作目录                cd/etc/:从当前目录切换到跟目录下的etc下        cd-:切换到上次切换的目录(切换前的目录),常用于两个文件夹之间相互切换            ......
  • IPython 使用技巧
    IPython是一个强大的交互式Pythonshell,提供了许多方便的功能,使Python编程更加高效和愉快。本文将介绍一些IPython的实用技巧,帮助开发者充分利用其功能,提高编程效率。1.基本操作和快捷键1.1启动IPython可以通过在终端输入以下命令来启动IPython:ipython启动后,你......
  • 路由追踪以及常用命令tracert\pathping
    一、常用的命令:对于网络工程师来说,需要熟练掌握的Windows路由追踪命令有两个:tracert和pathping,其中pathping是tracert和ping命令的结合,不但可以追踪目标IP地址的路由,还可以测试经过的每一跳的时延和丢包率。1.1tracert命令及举例tracert命令,通过向目标IP地址发送不同T......
  • Spectrasonics Keyscape v1.5.0c + Soundsource v1.6.0c,四巨头钢琴合成器,可以试试
    SpectrasonicsKeyscapev1.5.0c+Soundsourcev1.6.0c    KEYSCAPE是一款非凡的虚拟乐器,拥有世界上最多的收集器键盘选择。从“圣杯”钢琴到令人惊叹的键盘,你甚至不知道存在,这是一个键盘手的梦想成真。经过十年的制作,这些备受欢迎的键盘都经过精心修复,然后由著名的......
  • 【windows】防火墙命令
    #关闭防火墙netshfirewallsetopmodemode=disable#放行远程8888端口进来的流量netshadvfirewallfirewalladdrulename="88"protocol=TCPdir=inremoteport=8888action=allow#放行出去到远程8888端口的流量netshadvfirewallfirewalladdrulename="88"protoc......
  • 一些linux命令行方法
    复制部分文件要在Linux中复制整个文件夹但排除WAV和FIG文件,你可以使用rsync命令并结合多个--exclude参数来实现。以下是一个示例命令:rsync-av--exclude='*.wav'--exclude='*.fig'source_folder/destination_folder/-a:表示以归档模式复制文件夹,保留所有文件属性......
  • git 常用命令
    gitk      //查看基线gitstatus     //查看当前版本状态gitbranch  //查看本地所有分支gitbranch-a       //查看所有分支gitbranch-r      //查看远程所有分支gitcommit -m"xx需求"      //......