docker 与 k8s 底层架构的区别

比特旅人
• 阅读 1619

结构

docker 与 k8s 底层架构的区别

简介

最开始容器项目有很多公司在做像 Google 和其他厂商,但是就 docker 的容器项目最终成活下来, docker 自从统一了容器领域,但是由于过垄断, docker 迫于压力由Google , CoreOS , Redhat成立一个中立基金,,docker当年的被拆分出了几个标准化的模块 docker-client ,dockerd,containerd,docker-shim,runc 等,自己的容器运行时LibContainer捐出,改名为RunC. 并制定了一套镜像和容器的标准和规范( OCI ).由于 OCI 的成立.让其他公司可以不依赖与 docker 来实现自己的docker 运行时。

  • docker-cli: docker的前端,提供docker 命令,如docker run 、docker build等
  • dockerd(docker daemon):docker的服务端,其实就是docker-client的后台
  • containerd:容器服务,这也是docker的核心组件,负责容器的增删改等操作,这里containerd之所以作为一个单独的服务,而没有和dockerd集成到一块,是为了让其他的项目可以定义自己的客户端,比如kubernetes通过CRI客户端来访问containerd
  • runc:是一个命令行工具端,他根据oci(开放容器组织)的标准来创建和运行容器,containerd会调用runc命令来运行镜像。

    container

    我们核心的是 container, 最新k8s 绕过dockerd 直接调用 container 减少了一层, container 主要负责的是拉取和解压镜像, 上传和制作镜像是由 dockerd来负责的. 所以docker 的 container 与 k8s 的 container 是同一个.所以理论上,只要满足 OCI 的规范.无论是什么工具编译的镜像都能被 container 拉取、编译与运行。containerd是一个工业级别标准的容器运行时,它强调简单性、健壮性和可移植性,几乎囊括了单机运行一个容器运行时所需要的一切:执行、分发、监控、网络、构建、日志等。主要作用是:
    1)、管理容器的生命周期(从创建容器到销毁容器)
    2)、拉取/推送容器镜像
    3)、存储管理(管理镜像及容器数据的存储)
    4)、调用runC运行容器(与runC等容器运行时交互)
    5)、管理容器网络接口及网络dockerd实际真实调用的还是containerd的api接口,containerd是dockerd和runC之间的一个中间交流组件。 docker 镜像和 containerd 镜像通用。但组织方式和存放目录不同,导致docker与ctr命令不通用,各自管理自己的镜像和容器。此外k8s还有客户端命令crictl,用法与docker基本相同,可crictl -h查看用法。

参考资料

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
10个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
4年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
4年前
Linux查看GPU信息和使用情况
1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代
Stella981 Stella981
4年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
4年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
4年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
比特旅人
比特旅人
Lv1
愿山野浓雾都有路灯,风雨漂泊都有归舟。
文章
2
粉丝
0
获赞
0