卡卷网
当前位置:卡卷网 / 每日看点 / 正文

现在工作中k8s是使用containerd还是docker来管理容器?

作者:卡卷网发布时间:2025-02-24 21:26浏览数量:49次评论数量:0次

Kubernetes 里用啥工具来管容器,是用 containerd 还是 Docker

这种事儿,听起来好像很技术,但其实就那么回事儿,真正玩透了才明白,真没有表面看起来那么神秘。

咱就说说这个事儿,抛开那些高大上的词汇,简单直白点。给你条条道来,你就知道为啥选 containerd 才是眼下的王道了。

一、为什么这俩工具长得差不多?

咱先说个背景知识,这事儿的根子还在于,Kubernetes 这玩意儿,自己不生产容器,它就是个“调度员”,就是管你要什么容器,跑哪里,怎么跑,这些事儿。容器本身是由更底层的东西来管的。

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

现在工作中k8s是使用containerd还是docker来管理容器?  第1张

Dockercontainerd,就是两种帮你把容器跑起来的工具。最早 Docker 算是主流,后来 containerd 上位,成了 Kubernetes 里默认的容器管理方式。

这两个工具呢,说白了,都能帮你把应用打包成容器,把代码、依赖、配置啥的都塞一块,想在哪儿跑都行。

只是,Docker 做了更多,它不仅仅管容器,还做镜像构建、注册、分发什么的。而 containerd 就精简得多,专注跑容器的核心功能。你可以理解为 Docker 是个大公司里的全能员工,啥都想干;而 containerd 就是个专注一件事的小专家,干活专心不出岔子。

现在工作中k8s是使用containerd还是docker来管理容器?  第2张

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

二、Docker 落伍的根源在哪?

说白了,Docker 的锅有点儿多。一开始它啥都干,但 Kubernetes 真正搞起来后,发现有些事不需要它插手。

比如容器的构建和分发,用不上 Kubernetes 就能搞定;但是 Docker 自带的这些东西不仅多余,还拖慢系统。想想公司里的“全能”同事啥都管,有时候反倒不省心,是不是?

  1. 性能负担Docker 架构复杂、依赖多,在大规模场景下,额外的服务和功能就成了累赘,常常拖慢系统。就像你把一个公司所有职能都给一个人,这人反倒越干越慢,还常出小毛病。
  2. 兼容性不足Docker 的架构不符合 Kubernetes CRI(容器运行时接口)的规范,需要一层转接,叫 dockershim。多一个环节就多一份不稳定的风险,出点问题谁都搞不清锅在哪儿。换个精简专注的 containerd,直接上 CRI,少了中间商,省心多了。
  3. 复杂架构Docker 的架构里带了很多没用的东西,举个例子,自己带了个 Docker Engine 和 Docker Daemon,就像一个人带个小助理,干活是方便了,但也有点拖沓。咱不如直接让 containerd 这个大力士上,直接扛活儿干。
  4. Kubernetes 直呼“去掉 dockershim:2021 年 Kubernetes 就宣布正式抛弃 Docker 支持了,原因很简单,大家都嫌麻烦,尤其是多出来的 dockershim 维护成本高,风险大。既然有更好的选择,谁还拿着“扶不起的阿斗”?

三、那 containerd 有啥独门绝技?

好嘞,containerd 出场了。这个家伙清晰明了,就是个硬派选手。它干活就干“运行容器”这一件事,不掺和别的,省心省事儿。来看几个它独有的好处:

  1. 体积小,速度快:不多说了,containerd 不像 Docker 那么复杂,你也不用花额外心思去理解各种多余的东西。专注就是力量,咱玩 Kubernetes 就是要这个小、快、专注的工具,别整那些花里胡哨的。
  2. 架构简洁containerd 和 Kubernetes 打交道的接口天然契合,没啥中间层,直接干活就完事儿。容器调度上,少一环,稳定性就上来。再说,简洁的东西维护起来也省心,不会今天冒泡明天掉线。
  3. 维护方便,社区活跃:虽然 containerd 看着小,但人家是 CNCF(云原生计算基金会)亲自罩的,不会没人管。Kubernetes 里一出啥问题,容器底层的社区老铁马上就给你支援,不怕没解决方案。咱们用它,也更省心。

四、现实工作中的利弊权衡

好了,咱说点实际工作中的情况吧。用 containerd 一开始可能不太习惯,尤其你要是以前 Docker 用得很熟。但公司里啥活不是从学不会到学会,containerd 这玩意儿上手成本其实也没那么高。

  1. 开发、测试的环境Docker 环境用惯了,你本地开发、打包镜像还是得靠它。但是上了生产环境,部署到集群里,就用 containerd,两者配合着用,各司其职,这样效率最高。
  2. 从 Docker 转 containerd 的迁移成本:对,迁移成本有一些,但这就跟升级设备一样,忍一忍,等习惯了就好。这事儿吧,长痛不如短痛,公司总要向前走。切了 containerd,你会发现架构稳定性提升不止一点半点。
  3. 容器镜像管理containerd 没有内置的镜像构建和分发功能,但这事儿也不难解决,反正公司内部用一些专门的镜像库(Registry),照样方便得很。大公司还会用 CI/CD 工具链串起来,哪里还用纠结这个。

五、总结一句话

真要总结的话,就是这事儿早就没啥悬念了:Docker 好用在开发阶段,本地折腾项目谁都爱它;可真上生产,containerd 必须安排。干活儿嘛,就要用对的工具,containerd 精简稳定,省去 Docker 的各种麻烦和复杂性。咱就别纠结了,生产上用 Kubernetes 那就直接 containerd,少走弯路。

免费看 500 套技术教程的网站,希望对你有帮助

程序员快看-教程,程序员编程资料站
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

求一键三连:点赞、分享、收藏

我的技术网站:cxykk.com 里面有,500套技术系列教程、1万+道,面试八股文、BAT面试真题、简历模版,工作经验分享、架构师成长之路,全部免费,欢迎收藏和转发。


说在最后

最后再推荐一些免费的K8s专栏教程,希望能帮到你

K8S实战

01、K8s实战:Windows10安装Docker,配置阿里云加速器

02、K8s实战:基础知识之简介

03、K8s实战:基础知识之组件

04、K8s实战:Centos7.6yum安装Docker,配置阿里云加速器

05、K8s实战:Centos7.6安装dockercompose

06、K8s实战:Centos7.6使用Ansible安装K8S(测试单节点)

07、K8s实战:Dockercompose安装中文版GitLab,配置SSH免密登录

08、K8s实战:Centos7.6安装私服Harbor

09、K8s实战:SpringBoot使用jib打包Docker镜像至私服

10、K8s实战:dockercompose之网络设置

11、K8s实战:使用开源项目io.fabric8之docker

12、K8s实战:二进制方式搭建K8S集群(环境准备)

13、K8s实战:二进制方式搭建K8S集群(完结)

14、K8s实战:K8S管理平台Rancher安装及集群导入

15、K8s实战:陈述式管理之kubectl常用命令

16、K8s实战:声明式管理示例之K8S部署Nginx及修改删除

17、K8s实战:K8S存储Volume之ConfigMap

18、K8s实战:K8S存储Volume之Secret

19、K8s实战:K8S存储之emptyDir+hostPath

20、K8s实战:K8S存储之NFSPVPVC

21、K8s实战:K8S控制器之ReplicaSet

22、K8s实战:K8S控制器之Deployment

23、K8s实战:K8S控制器之DaemonSet

24、K8s实战:K8S控制器之JobCronJob

25、K8s实战:K8S之Service

26、K8s实战:K8S之Ingress

27、K8s实战:K8S之Schedule

28、K8s实战:K8S之Helm安装与配置

29、K8s实战:K8S之部署微服务项目实战

Docker实战

01、Docker 基础教程

02、Docker 架构

03、Ubuntu 安装 Docker

04、CentOS Docker 安装

05、Windows 安装 Docker

06、Docker run 运行镜像

07、Docker 容器

08、Docker top 查看容器进程

09、Docker inspect 容器元数据

10、Docker start 启动容器

11、Docker restart 重启容器

12、Docker rm 删除已停止的容器

13、Docker 命名容器

14、Docker 容器运行 Web 应用

15、Docker 端口映射

16、Docker images 本地镜像列表

17、Docker 查找镜像

18、Docker commit 更新镜像

19、Docker Dockerfile 创建镜像

20、Docker build 构建镜像

21、Docker 镜像打标签

22、Docker 部署 Nginx 环境

23、Docker 部署 PHP 环境

24、Docker 安装 MySQL

25、Docker 安装 Tomcat

26、Docker 安装 Python

27、Docker 安装 Redis

28、Docker 安装 MongoDB

29、Docker 安装 Apache

30、Docker 命令大全

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码