目 录CONTENT

文章目录

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

Seven
2022-10-12 / 0 评论 / 6 点赞 / 4834 阅读 / 10653 字 / 正在检测是否收录...

一、ctr 命令使用

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

如果你要将本地镜像导入到k8s集群里使用,那么你需要注意命名空间,比如导入nginx.tar

ctr -n k8s.io i import nginx.tar

ctr 常用命令

ctr命令 示例 说明
ctr image ls ctr -n k8s.io i ls 查看本地镜像
ctr image pull ctr image pull docker.io/library/nginx:alpine 拉取镜像
ctr image push ctr image push --plain-http --user admin:123456 192.168.20.11/test/coredns:1.2.0 或者 ctr -n=k8s.io image push --user admin:Harbor12345 harbor.test.in/security/sonarqube:8.9.2-community 推送镜像
ctr image import ctr image import coredns.tar 或者 ctr --namespace default image import pg_dump.tar - docker.v1.1 导入镜像
ctr image export ctr image export coredns.tar 192.168.20.11/source/coredns:1.2.0 导出镜像
ctr image tag ctr -n=k8s.io image tag docker.io/library/sonarqube:8.9.2-community harbor.test.in/security/sonarqube:8.9.2-community 打镜像标签
ctr image rm ctr image rm docker.io/rancher/pause:3.1 或 ctr i rm docker.io/rancher/pause:3.1 删除镜像
ctr namespaces ls ctr namespaces ls 查看命名空间
ctr task ls 查看运行的容器

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、导入镜像

# 不支持 build,commit 镜像
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

二、crictl和docker命令比较

containerd命令 docker命令 注解 其他
crictl pull docker pull 拉取镜像
crictl images docker images 查看镜像 crictl images -q 只打印镜像id
crictl inspecti docker inspect 查看镜像详情
crictl rmi docker rmi 删除镜像
docker push 推送镜像 可使用ctr image push
docker load/save -i 导入/导出镜像 可使用ctr images import/export
crictl ps docker ps 查看容器
crictl inspect docker inspect 查看容器详情
crictl logs docker logs 查看容器日志
crictl exec docker exec 容器内执行命令
crictl stats docker stats 查看容器资源使用情况
crictl create docker create 创建容器
crictl start/stop docker start/stop 启动/停止容器
crictl rm docker rm 删除容器
crictl pods 查看Pod列表
crictl inspectp 查看Pod详情
crictl runp 启动Pod
crictl stopp 停止Pod

三、crictl 命令

3.1、crictl 配置

# 通过在配置文件中设置端点 --config=/etc/crictl.yaml
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、获取最近的 2 行日志

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

3.12、拉取镜像

crictl pull nginx
6

评论区