Container容器语法

Container

作为接替 Docker 运行时的 Containerd 在早在 Kubernetes1.7 时就能直接与 Kubelet 集成使用,只是大部分时候我们因熟悉 Docker,在部署集群时采用了默认的 dockershim。在V1.24起的版本的 kubelet 就彻底移除了dockershim,改为默认使用Containerd了,当然也使用 cri-dockerd 适配器来将 Docker Engine 与 Kubernetes 集成,containerd 相比于docker , 多了namespace概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用k8s.io 作为命名空间

更换 Containerd 后,以往我们常用的 docker 命令也不再使用,取而代之的分别是 crictl 和 ctr 两个命令客户端。crictl 是遵循 CRI 接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像。ctr 是 containerd 的一个客户端工具

Containerd 也有 namespaces 的概念,对于上层编排系统的支持,ctr 客户端 主要区分了 3 个命名空间分别是k8s.io、moby和default,以上我们用crictl操作的均在k8s.io命名空间,使用ctr 看镜像列表就需要加上-n 参数。crictl 是只有一个k8s.io命名空间,但是没有-n 参数。

ctr images pull 拉取的镜像默认放在default,而 crictl pull 和 kubelet 默认拉取的镜像都在 k8s.io 命名空间下。所以通过ctr导入镜像的时候特别注意一点,最好指定命名空间

# containerd 版本 
ctr -v
# k8s 版本
crictl -v 

# 一般来说你某个主机安装了 k8s 后,命令行才会有 crictl 命令。而 ctr 是跟 k8s 无关的,你主机安装了 containerd 服务后就可以操作 ctr 命令

一、镜像

1.1、常见命令

释义 语法 备注(不指明命名空间,默认为k8s.io)
查看所有镜像 crictl images & ctr image list & ctr i list & ctr i ls 四种形式皆可
删除镜像 ctr -n k8s.io i rm k8s.gcr.io/pause:3.2
删除镜像 crictl rmi k8s.gcr.io/pause:3.2
拉取镜像 ctr -n k8s.io i pull -k k8s.gcr.io/pause:3.2
推送镜像 ctr -n k8s.io i push -k k8s.gcr.io/pause:3.2
导出镜像 ctr -n k8s.io i export pause.tar k8s.gcr.io/pause:3.2
导入镜像 ctr -n k8s.io i import pause.tar
标签TAG ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 若镜像存在,使用参数--force
清空无用镜像 crictl rmi --prune 同docker image prune效果一致

1.2、容器启动

# --null-io: 将容器内标准输出重定向到/dev/null
# --net-host: 主机网络
# -d: 当task执行后就进行下一步shell命令,如没有选项,则会等待用户输入,并定向到容器内
# --mount 挂载本地目录或文件到容器
# --env 环境变量
# --log-uri 如需配置自定义日志,值格式file:///var/log/xx.log
ctr -n k8s.io run \
	--null-io --net-host -d --env PASSWORD="123456" \
    --mount type=bind,src=/etc,dst=/host-etc,options=rbind:rw

二、容器操作

释义 语法 备注(不指明命名空间,默认为k8s.io)
查看所有pod crictl pods
查看pod信息 crictl pods --id dae3e667fc348
启动pod crictl runp xxx
停止pod crictl stopp xxx
移除pod crictl rmp xxx
查看所有容器 crictl ps -a 涉及显示多个pod下的容器
查看所有容器 crictl ps 涉及显示多个pod下的容器,状态:在运行
停止容器 crictl stop 9992010dab3aa
启动容器 crictl start 9992010dab3aa
删除容器 crictl rm 9992010dab3aa
查看容器信息 crictl inspect 9992010dab3aa
查看容器日志 crictl logs 9992010dab3aa
容器内部编辑 crictl exec -i -t 9992010dab3aa ls 最近N行内容追加参数--tail=N
配置文件位置 cat /etc/crictl.yaml runtime-endpoint对应值
基于配置文件 crictl -r /run/containerd/containerd.sock pods

你可能感兴趣的:(部署,工具,概念,container,k8s,容器管理)