一、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
评论区