containerd常用命令

帮助菜单

COMMANDS:
   plugins, plugin            provides information about containerd plugins
   version                    print the client and server versions
   containers, c, container   manage containers
   content                    manage content
   events, event              display containerd events
   images, image, i           manage images
   leases                     manage leases
   namespaces, namespace, ns  manage namespaces
   pprof                      provide golang pprof outputs for containerd
   run                        run a container
   snapshots, snapshot        manage snapshots
   tasks, t, task             manage tasks
   install                    install a new package
   oci                        OCI tools
   shim                       interact with a shim directly
   help, h                    Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug                      enable debug output in logs
   --address value, -a value    address for containerd's GRPC server (default: "/run/containerd/containerd.sock") [$CONTAINERD_ADDRESS]
   --timeout value              total timeout for ctr commands (default: 0s)
   --connect-timeout value      timeout for connecting to containerd (default: 0s)
   --namespace value, -n value  namespace to use with commands (default: "default") [$CONTAINERD_NAMESPACE]
   --help, -h                   show help
   --version, -v                print the version

将镜像挂载到主机目录
#ctr i mount docker.io/library/nginx:alpine /mnt
 sha256:5da2ba1075ada2783aada4fa30ec8cdd56a072759ea7c283de1c505b56ed0e70
 [root@containerd ~]#tree -L 1 /mnt/
/mnt/
├── bin
├── dev
├── docker-entrypoint.d
├── docker-entrypoint.sh
├── etc
├── home
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

18 directories, 1 file
 ctr i unmount /mnt  #将镜像从主机目录上卸载
 ctr i check #主要查看其中的 `STATUS``complete` 表示镜像是完整可用的状态。
ctr -n k8s.io images ls              #查看镜像
ctr -n k8s.io images pull -k         #拉取镜像,拉取的时候忽略校验
ctr -n k8s.io images pull --tlscacert /etc/....../tls.crt   #拉取镜像,拉镜像的时候使用tls证书进行验证

#将离线镜像tar包导入到本地镜像缓存中,打tag并push镜像到镜像仓库

ctr -n k8s.io i import containerd-build-aarch64-1.1.0.tar
ctr -n k8s.io i ls |grep build-aarch64
ctr -n k8s.io i tag docker.io/containerd/build-aarch64:1.1.0 harbor.xxx.com/
ctr -n k8s.io i push --tlscacert /etc/containerd/certs.dxxxx/tls.crt harbor.xxx.com/ -u admin:Harbor12345
 
ctr -n k8s.io i push --tlscacert /etc/....../tls.crt  #上传镜像,基于tls验证
ctr -n k8s.io i push -k  #上传镜像,忽略认证
 
ctr -n k8s.io c ls     #查看容器对象元数据,不包含状态
ctr -n k8s.io task ls  #查看容器,包含容器状态
ctr -n k8s.io task kill -a -s 9  {id}     #根据容器id停止容器,停止时会杀死容器中的所有服务
ctr -n k8s.io c rm  {id}    #删除容器对象元数据,注意:如果容器状态为Running,则无法进行删除

#例:创建一个容器对象

ctr -n k8s.io c create -t  --net-host --privileged --env GOPATH=/go \
    --mount type=bind,src=${PWD}/containerd,dst=/go/src/github.com/containerd/containerd,options=rbind:rw \
    docker.io/containerd/build-aarch64:1.1.0 containerd-build-aarch64
 
#这里 --mount 与docker -v 作用相同,
 –null-io: 将容器内标准输出重定向到/dev/null
–net-host: 主机网络
-d: 当task执行后就进行下一步shell命令,如没有选项,则会等待用户输入,并定向到容器内


#启动一个容器进程,名称是上一步创建的容器对象的名称
ctr -n k8s.io task start -d containerd-build-aarch64
 
#连接到一个处于RUNNING状态容器的标准流,注意:如果在这里exit,会退出容器,并删除当前的容器进程,仅容器对象还在
ctr -n k8s.io task attach containerd-build-aarch64
 
#与docker run 的效果一样,在这里exit,会退出容器,但不会对容器状态产生影响,其还存在且是RUNNING
ctr -n k8s.io task exec -t --exec-id bash_1 containerd-build-aarch64 sh
 
#杀死一个容器进程中的所有子进程,执行之后容器状态为STOPPED,此时可以使用 task rm 进行删除
ctr -n k8s.io task kill -a -s 9 containerd-build-aarch64
 
#删除非运行状态的容器,但是不删除容器元数据,使用ctr -n k8s.io -c ls 还可以查看到
ctr -n k8s.io task rm containerd-build-aarch64
 
#如果要删除容器元数据,下面的命令不光删除容器对象数据,同时还会级联删除对应的容器的task
ctr -n k8s.io c rm containerd-build-aarch64
 
# ctr c create hub.renwoxing.com/library/nginx:latest nginx
# ctr c ls

CONTAINER    IMAGE                                     RUNTIME                  
nginx        hub.renwoxing.com/library/nginx:latest    io.containerd.runc.v2    
# ctr c ls -q
nginx
[root@master01 ~]# ctr c info nginx
{
    "ID": "nginx",
    "Labels": {
        "io.containerd.image.config.stop-signal": "SIGQUIT"
    },
    "Image": "hub.renwoxing.com/library/nginx:latest",
    "Runtime": {
        "Name": "io.containerd.runc.v2",
        "Options": {
            "type_url": "containerd.runc.v1.Options"
        }
    },

# ctr task  start  -d nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
You have new mail in /var/spool/mail/root
[root@master01 ~]# ctr task  ls
TASK     PID      STATUS    
nginx    58028    RUNNING
[root@master01 ~]# ctr task  ls -q
nginx
[root@master01 ~]# ctr task  exec  --exec-id 0 -t nginx sh   # 注意必须要指定 --exec-id 参数,这个 id 可以随便写,只要唯一就行
# ls
bin   docker-entrypoint.d   home   media  proc	sbin  tmp
boot  docker-entrypoint.sh  lib    mnt	  root	srv   usr
dev   etc		    lib64  opt	  run	sys   var
[root@master01 ~]# ctr task pause  nginx
[root@master01 ~]# ctr task  ls 
TASK     PID      STATUS    
nginx    58028    PAUSED
[root@master01 ~]# ctr task resume  nginx
[root@master01 ~]# ctr task  ls 
TASK     PID      STATUS    
nginx    58028    RUNNING
[root@master01 ~]# ctr task kill  nginx
[root@master01 ~]# ctr task  ls 
TASK     PID      STATUS    
nginx    58028    STOPPED
[root@master01 ~]# ctr task rm  nginx
[root@master01 ~]# ctr task  ls 
TASK    PID    STATUS  
[root@master01 ~]# 
[root@master01 ~]# ctr task metrics nginx
ID       TIMESTAMP                                 
nginx    2022-01-09 09:13:15.82922356 +0000 UTC    

METRIC                   VALUE                  
memory.usage_in_bytes    2093056                
memory.limit_in_bytes    9223372036854771712    
memory.stat.cache        16384                  
cpuacct.usage            38240875               
cpuacct.usage_percpu     [21321842 16919033]    
pids.current             3                      
pids.limit               0                      
[root@master01 ~]# ctr task  ps nginx
PID      INFO
68922    -
68951    -
68952    -
[root@master01 ~]# ps -ef| grep nginx
root      68901      1  0 17:12 ?        00:00:00 /usr/local/bin/containerd-shim-runc-v2 -namespace default -id nginx -address /run/containerd/containerd.sock
root      68922  68901  0 17:12 ?        00:00:00 nginx: master process nginx -g daemon off;
101       68951  68922  0 17:12 ?        00:00:00 nginx: worker process
101       68952  68922  0 17:12 ?        00:00:00 nginx: worker process
root      70706 113990  0 17:14 pts/0    00:00:00 grep --color=auto nginx

*************************************************************************************************************
 
ctr --help
ctr i --help
ctr i pull --help

#example: 基于tls证书,使用ctr命令 ctr i pull --help

ctr -n k8s.io i pull -k harbor.xxx.com/
ctr -n k8s.io i pull --tlscacert /etc/containerd/certs.d/harbor.xxx.com/tls.crt harbor.xxx.com/
ctr -n k8s.io i push --tlscacert /etc/containerd/certs.d/harbor.xxx.com/tls.crt   harbor.xxx.com/
ctr -n k8s.io i push -k harbor.xxx.com/k8s-infra/us.gcr.io/k8s-artifacts-prod/build-image/kube-cross:v1.13.15-1

特别的:基于私有镜像仓库,如果上面的pull 或 push 报401错误, username与pwd使用对应镜像仓库的用户名和密码替换

ctr -n k8s.io i push -u username:pwd --tlscacert /etc/containerd/certs.d/xxx/tls.crt harbor.xxx.com/

注意:
ctr 不支持 build,commit 镜像

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值