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

开发 开发工具
当前 containerd 已经取代docker 成为默认的容器运行时了,我们在日常排查问题的时候,经常会使用containerd 的客户端去排查问题。所以日常的命令还是需要掌握的。

当前 containerd 已经取代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

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


责任编辑:武晓燕 来源: 今日头条
相关推荐

2022-12-06 07:30:12

K8s云原生生态系统

2021-07-14 14:20:22

root命令Linux

2023-09-20 14:30:36

K8s亚马逊谷歌

2022-04-22 13:32:01

K8s容器引擎架构

2020-03-20 10:13:15

Linux 系统 数据

2022-06-30 10:22:26

K8s可观测Prometheus

2020-11-10 07:05:41

DockerK8S云计算

2021-03-24 06:26:00

kubeadmK8Scontainerd

2023-11-06 07:16:22

WasmK8s模块

2020-07-30 09:10:21

DockerK8s容器

2023-09-06 08:12:04

k8s云原生

2022-09-07 09:22:36

SpringBootWeb

2020-07-22 09:25:11

DockerK8S云计算

2020-05-12 10:20:39

K8s kubernetes中间件

2022-09-05 08:26:29

Kubernetes标签

2020-11-05 11:11:26

云计算DockerOpenStac

2020-12-15 18:56:26

MirantisDockersKubernetes

2020-12-07 07:48:35

K8sDockerKubernetes

2020-12-29 05:29:39

DockerK8s容器

2023-08-04 08:19:02

点赞
收藏

51CTO技术栈公众号