首页 > 其他分享 >Kubernets与Docker的故事

Kubernets与Docker的故事

时间:2023-07-10 23:01:35浏览次数:33  
标签:调用 Kubernetes 故事 containerd Kubernets 接口 Docker CRI

在 2016 年底的 1.5 版里,Kubernetes 引入了一个新的接口标准:CRI ,Container Runtime Interface。

CRI 采用了 ProtoBuffer 和 gPRC,规定 kubelet 该如何调用容器运行时去管理容器和镜像,但这是一套全新的接口,和之前的 Docker 调用完全不兼容。

 Kubernetes 也只能同时提供一个“折中”方案,在 kubelet 和 Docker 中间加入一个“适配器”,把 Docker 的接口转换成符合 CRI 标准的接口。

而 Docker把原本单体架构的 Docker Engine 拆分成了多个模块,其中的 Docker daemon 部分就捐献给了 CNCF,形成了 containerd。

containerd 作为 CNCF 的托管项目,自然是要符合 CRI 标准的。但 Docker 出于自己诸多原因的考虑,它只是在 Docker Engine 里调用了 containerd,外部的接口仍然保持不变,也就是说还不与 CRI 兼容。

 Kubernetes 里就出现了两种调用链:

  • 第一种是用 CRI 接口调用 dockershim,然后 dockershim 调用 Docker,Docker 再走 containerd 去操作容器。
  • 第二种是用 CRI 接口直接调用 containerd 去操作容器。

Kubernets与Docker的故事_Docker

由于都是用 containerd 来管理容器,所以这两种调用链的最终效果是完全一样的,但是第二种方式省去了 dockershim 和 Docker Engine 两个环节,更加简洁明了,损耗更少,性能也会提升一些。

所以,“弃用 Docker”对 Kubernetes 和 Docker 来说都不会有什么太大的影响,因为他们两个都早已经把下层都改成了开源的 containerd,原来的 Docker 镜像和容器仍然会正常运行,唯一的变化就是 Kubernetes 绕过了 Docker,直接调用 Docker 内部的 containerd 而已。

Docker 是一个完整的软件产品线,不止是 containerd,它还包括了镜像构建、分发、测试等许多服务,甚至在 Docker Desktop 里还内置了 Kubernetes。



标签:调用,Kubernetes,故事,containerd,Kubernets,接口,Docker,CRI
From: https://blog.51cto.com/key3feng/6681840

相关文章

  • Docker教程
    目录Docker教程1.Docker是什么2.Docker的用途3.Docker的安装4.运行Docker4.1DockerHelloWorld4.2运行交互式的容器4.3后台模式启动容器4.4停止容器5.Docker容器使用5.1Docker客户端5.2容器使用5.2.1获取镜像5.2.2启动镜像5.2.3启动已经停止的容器5.2.4后台运行5.......
  • Docker - DockerFile
      DockerFile的介绍DockerFile的指令DockerFile构建过程      DockerFile的介绍 狂神:dockerfile是用来构建docker镜像的文件命令参数脚本。狂神:dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件狂神:Docker镜像逐渐成为企业交付......
  • Centos7.9系统docker部署plexServer,打造个人影音服务器
    1.准备工作1.1部署docker安装依赖包yum-yinstallgccgcc-c++yum-utilsdevice-mapper-persistent-datalvm2设置stable镜像仓库yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo或yum-config-manager--add-repohttp://mirrors.al......
  • 解决Docker -v 挂载单文件问题
    问题描述下面命令挂载文件看着没有什么问题吧? dockerrun--namexxxx-p8001:80-v/docker/appsettings.json:/app/appsettings.json-dxxxx:v1.1.0但当我们执行完就会发现文件并没有挂载过来而是给我们创建了一个文件夹 解决方案 官方的建议是挂载文件夹,而不是......
  • 【问题解决】docker login报错 org.freedesktop.Secret.Error.IsLocked: Cannot creat
    问题场景环境docker24.0.2社区版UbuntuServer18.04LTS刚刚执行dockerlogin登录仓库报错:hellxz@bigdata:~/dockerTest$dockerloginharbor.xxx.com.cnUsername:hellxzPassword:**Message:17:26:21.611:Remoteerrorfromsecretservice:org.freedesktop.Se......
  • Windows-docker集成SRS服务器的部署和使用
    一、WindowsDocker安装DockerDesktop官方下载地址: https://docs.docker.com/desktop/install/windows-install/下载windows版本的就可以了。注意:此方法仅适用于Windows10操作系统专业版、企业版、教育版和部分家庭版!安装Hyper-V我们开启Hyper-V。我们安装好DockerforWind......
  • 如何实现java Docker Engine API的具体操作步骤
    使用Java实现DockerEngineAPI引言Docker是一款非常流行的容器化平台,它可以让开发者更方便地构建、交付和运行应用程序。Docker提供了一系列的API,用于管理和操作Docker引擎,通过这些API可以实现容器的创建、启动、停止等操作。本文将向你介绍如何使用Java来实现DockerEngineAPI......
  • Docker CLI docker login和logout 常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • docker with non root priviledge
    RunningDockerContainersasNon-RootUserhttps://www.geeksforgeeks.org/running-docker-containers-as-non-root-user/Bydefault,DockerContainersrunasRootUsers.Now,ifyouarerunningapplicationsinsideDockerContainers,youhaveaccesstoallth......
  • Docker系列---【Docker和宿主机如何传输文件?】
    Docker和宿主机如何传输文件?前提:Docker正在运行,即dockerps命令能看到。宿主机传输文件到dockerdockercp<宿主机文件路径><容器ID或名称>:<容器内目标路径>#例:复制宿主机文件data.txt到容器目录/app/dockercp/host/data.txtmy-container:/app/data.txtdocker传输文......