乐趣区

关于java:再见-Docker-5分钟转型-containerd

Docker 作为十分风行的容器技术,之前常常有文章说它被 K8S 弃用了,取而代之的是另一种容器技术 containerd!其实 containerd 只是从 Docker 中分离出来的底层容器运行时,应用起来和 Docker 并没有啥区别,本文次要介绍下 containerd 的应用,心愿对大家有所帮忙!

SpringBoot 实战电商我的项目 mall(40k+star)地址:https://github.com/macrozheng/mall

containerd 简介

containerd 是一个工业级规范的容器运行时,它强调简略性、健壮性和可移植性。containerd 能够在宿主机中治理残缺的容器生命周期,包含容器镜像的传输和存储、容器的执行和治理、存储和网络等。

Docker vs containerd

containerd 是从 Docker 中分离出来的一个我的项目,能够作为一个底层容器运行时,当初它成了 Kubernete 容器运行时更好的抉择。

不仅仅是 Docker,还有很多云平台也反对 containerd 作为底层容器运行时,具体参考下图。

K8S CRI

K8S 公布 CRI(Container Runtime Interface),对立了容器运行时接口,但凡反对 CRI 的容器运行时,皆可作为 K8S 的底层容器运行时。

K8S 为什么要放弃应用 Docker 作为容器运行时,而应用 containerd 呢?

如果你应用 Docker 作为 K8S 容器运行时的话,kubelet 须要先要通过 dockershim 去调用 Docker,再通过 Docker 去调用 containerd。

如果你应用 containerd 作为 K8S 容器运行时的话,因为 containerd 内置了 CRI 插件,kubelet 能够间接调用 containerd。

应用 containerd 不仅性能进步了(调用链变短了),而且资源占用也会变小(Docker 不是一个纯正的容器运行时,具备大量其余性能)。

containerd 应用

如果你之前用过 Docker,你只有略微花 5 分钟就能够学会 containerd 了,接下来咱们学习下 containerd 的应用。

  • 在之前的文章《据说只有高端机器才配运行 K8S,网友:1G 内存的渣渣跑起来了!》中咱们装置了 K3S,因为 K3S 中默认应用 containerd 作为容器运行时,咱们只有装置好 K3S 就能够应用它了;
  • 其实只有把咱们之前应用的 docker 命令改为 crictl 命令即可操作 containerd,比方查看所有运行中的容器;
crictl ps
CONTAINER           IMAGE               CREATED                  STATE               NAME                ATTEMPT             POD ID
4ca73ded41bb6       3b0b04aa3473f       Less than a second ago   Running             helm                20                  21103f0058872
3bb5767a81954       296a6d5035e2d       About a minute ago       Running             coredns             1                   af887263bd869
a5e34c24be371       0346349a1a640       About a minute ago       Running             nginx               1                   89defc6008501
  • 查看所有镜像;
crictl images
IMAGE                                      TAG                 IMAGE ID            SIZE
docker.io/library/nginx                    1.10                0346349a1a640       71.4MB
docker.io/rancher/coredns-coredns          1.8.0               296a6d5035e2d       12.9MB
docker.io/rancher/klipper-helm             v0.4.3              3b0b04aa3473f       50.7MB
docker.io/rancher/local-path-provisioner   v0.0.14             e422121c9c5f9       13.4MB
docker.io/rancher/metrics-server           v0.3.6              9dd718864ce61       10.5MB
docker.io/rancher/pause                    3.1                 da86e6ba6ca19       327kB
  • 进入容器外部执行 bash 命令,这里须要留神的是只能应用容器 ID,不反对应用容器名称;
crictl exec -it a5e34c24be371 /bin/bash
  • 查看容器中利用资源占用状况,能够发现占用非常低。
crictl stats
CONTAINER           CPU %               MEM                 DISK                INODES
3bb5767a81954       0.54                14.27MB             254B                14
a5e34c24be371       0.00                2.441MB             339B                16

总结

从 Docker 转型 containerd 非常简单,根本没有什么门槛。只有把之前 Docker 命令中的 docker 改为 crictl 根本就能够了,果然是同一个公司出品的货色,用法都一样。所以不论 K8S 到底弃用不弃用 Docker,对咱们开发者应用来说,根本没啥影响!

本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!

退出移动版