K8s都开始放弃Docker了,Containerd命令走起

containerd 目前有三个客户端,分别是 ctr、nerdctl、crictl 下面我们逐一讲解一下。

ctr

ctr 是containerd 的亲儿子,containerd 的所有功能都可以通过ctr 命令去操作。

比如我们可以通过ctr 拉一个镜像

ctr images pull docker.io/library/nginx:1.21

或者通过ctr 创建一个容器

 ctr container create -t docker.io/library/nginx:latest nginx_1

最后通过ctr 启动容器,这里是 task 子命令,containerd 中只要涉及进程相关的都使用task

 ctr task start -d nginx_1  

容器启动后,就可以通过 exec 进入容器

ctr task exec -t --exec-id bash_1 nginx_1 bash

nerdctl

nerdctl 的命令,我就不说了,因为 nerdctl 目的就是为了做一个兼容 docker 命令的客户端,所以使用的命令和 docker 完全保持一致。

我们就可以直接抛弃 docker + dockerd了,直接通过 nerdctl + containerd 了。

crictl

crictl 在k8s里面非常常用,严格来说,它并不是 containerd 的客户端,只是因为containerd 实现了crictl 的接口,所以可以使用 crictl 。crictl 是k8s CRI 客户端,所以,所有实现CRI 接口的服务,都可以使用 crictl

我们可以先通过

crictl pull xxx

拉镜像,然后启动 Pod(sandbox)

crictl runp pod.json

其中pod.json 内容如下:

{
"metadata": {
"name": "nginx-sandbox",
"namespace": "default",
"attempt": 1,
"uid": "hdishd83djaidwnduwk28bcsb"
},
"log_directory": "/tmp",
"linux": {
"security_context": {
"namespace_options":{
"network": 2
}
}
}
}

然后为这个pod 添加一个容器

 crictl create podID  container.json pod.json

其中,container.json 内容如下:

{
"metadata": {
"name": "busybox"
},
"image":{
"image": "busybox"
},
"command": [
"top"
],
"log_path":"busybox.log",
"linux": {
}
}

创建成功后,我们再通过 ctr 命令检查一下。

# ctr -n k8s.io c ls
CONTAINER IMAGE RUNTIME
56ae054eed20d0e4dbaf2bf300406baaedaa63646a3b0dc39911daaaff4cd569 docker.io/library/busybox:latest io.containerd.runc.v2
e23205e980b40ebeef875f9489321fe67906cbe62b6b6232912aa69b58842b95 k8s.gcr.io/pause:3.2 io.containerd.runc.v2

可以看到成功的启动了两个容器。

新闻名称:K8s都开始放弃Docker了,Containerd命令走起
当前路径:http://www.shufengxianlan.com/qtweb/news39/457139.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联