首页 > 其他分享 >Containerd 不能完全代替docker,仍需要选择 Docker 使用 docker build、docker push、docker save、docker load 等命令

Containerd 不能完全代替docker,仍需要选择 Docker 使用 docker build、docker push、docker save、docker load 等命令

时间:2024-09-13 17:25:23浏览次数:12  
标签:load 容器 Kubernetes Containerd 镜像 docker Docker

基本概念

在 Kubernetes 中,容器运行时(Container Runtime)是集群 Node 节点的核心组件之一。

Container Runtime 的主要功能包括:

  • 镜像管理

  • 容器生命周期管理,包括容器的创建、启动、停止、删除

  • 资源隔离

  • 网络配置

  • 存储挂载

  • 安全特性

Kubernetes 集群的 Kubelet 组件,可以通过 Container Runtime Interface(CRI)与 Container Runtime 进行交互,确保容器能够按照 Kubernetes 的调度策略和管理要求,在 Node 节点上运行。

主流的容器运行时有 Docker、Containerd 等。Docker 是早期最流行的容器运行时,而 Containerd 最早是 Docker 的组件之一。本文将对 Docker 与 Containerd 的关系、选择等内容进行详细解读。



 

Docker 简介

笔者在《【Docker】专题一:Docker 基本架构》中做过介绍,点击查看更多详细内容。

行者Sun,公众号:实施运维知识交流【Docker】专题一:Docker 基本架构
Docker 是一种轻量级虚拟化技术,用户通过 Docker 可以在多个隔离的环境中运行不同的应用程序,从而简化了应用程序的打包、分发和部署过程。Docker 最开始只是一个单一的二进制文件,负责镜像、容器、网络、卷等资源所有的管理工作。在 Docker 后续演化的架构中,Containerd 成为 Docker Daemon 的核心子组件,承担与容器相关的实际管理工作:
  • Docker Daemon 将高层指令(如 docker run)转换为 Containerd 可以理解的指令
  • Containerd 则使用 Runc 作为容器运行时(Container Runtime),通过调用 Runc 实际执行这些指令

 


 

Containerd 简介

Containerd 是一种行业标准的容器运行时,强调简单性、健壮性和可移植性。

Containerd 最初是 Docker 的组件之一,负责管理容器的生命周期,其设计目标是提供一个简单、高效、安全的容器运行时,专注于核心功能,避免不必要的复杂性。

2017 年,Docker 将 Containerd 作为一个独立的容器运行时项目,捐赠给了云原生计算基金会(CNCF),目前已经成为容器管理领域的标准。

 


 

容器运行时的选择

1、Kubernetes 场景下的选择

Kubernetes 从 1.20 版本开始,推荐使用 Containerd 作为默认的容器运行时,弃用了对 Docker 的直接支持(⚠️ 不是完全不支持!)。Kubernetes 对默认容器运行时的变更,是基于 Containerd 与 Docker 相比具有调用链更短、组件更少、占用节点资源更少、运行更稳定的优势,可以为 Kubernetes 提供更轻量、更高效的容器管理能力,以及对 OCI 标准的全面支持能力。如下图所示,Containerd 与 Kubernetes 可以实现更紧密、高效的集成:
  • Kubernetes 弃用对 Docker 的直接支持之前,Kubelet 使用 Containerd 作为高层运行时,中间需要经过 Dockershim 和 Dockerd 两步转发
  • Kubernetes 弃用对 Docker 的直接支持之后,Kubelet 直接访问 Containerd,提升了容器运行时的调用效率(

    标签:load,容器,Kubernetes,Containerd,镜像,docker,Docker
    From: https://www.cnblogs.com/cheyunhua/p/18412586

相关文章

  • immich docker-compose.yml下载慢、github下载慢、ghcr.io镜像
    解决方案:将:image:ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}改为:image:ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}使用镜像下载,给出修改后的文件,直接复制然后就可以运行。点击查看代码##WARNING:Makesuretousethed......
  • WPF 实现一个吃豆豆的Loading加载动画
    运行的效果如下 先引入一下我们需要的库在nuget上面搜一下"expression.Drawing",安装一下这个包 我们再创建一个Window,引入一下这个包的命名空间我们设置一下这个加载动画呈现的窗体的样式xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"......
  • docker配置springcloud项目到服务器
    1.服务器安装部署docker镜像2.创建镜像目录,如图所示 以其中一个服务为例,每个文件夹对应一个服务单元,每个文件夹中包含 sh,Dockerfile文件3.编辑项目中的application-test(根据环境来定),如图:   4.配置Nacos,单独配置命名空间,增加配置文件,注意,组一定要是test,配错了系......
  • VMware Avi Load Balancer 30.2.2 发布下载,新增功能概览
    VMwareAviLoadBalancer30.2.2-多云负载均衡平台应用交付:多云负载均衡、Web应用防火墙和容器Ingress服务负载均衡平台VMwareAviLoadBalancerVMwareAviLoadBalancer可简化应用交付,并提供多云负载均衡、Web应用防火墙和容器Ingress服务。名称变更VMwareNS......
  • docker overlay目录数据占用过大,进行迁移
    一定要先停docker,切记第一步:停dockersystemctlstopdocker第二步:复制数据先将docker中数据拷贝到一个空间大的挂在目录下cp-R-p/var/lib/docker//data/docker第三步:创建软连接先删除/var/lib/docker文件夹将原来docker文件指向新的/data/dockerln-s/data/docker/var/lib/d......
  • UDS 诊断 - RequestUpload(请求上传)(0x35)服务
    UDS诊断服务系列文章目录诊断和通信管理功能单元UDS诊断-DiagnosticSessionControl(诊断会话控制)(0x10)服务UDS诊断-ECUReset(ECU重置)(0x11)服务UDS诊断-SecurityAccess(安全访问)(0x27)服务UDS诊断-CommunicationControl(通信控制)(0x28)服务UDS诊断-TesterPresent......
  • 3.2 Upload源码分析 -- ant-design-vue系列
    Upload源码分析–ant-design-vue系列源码地址:https://github.com/vueComponent/ant-design-vue/blob/main/components/upload/Upload.tsx1概述本篇是对Upload组件的分析,这个组件调用了vc-upload,是对vc-upload的封装。作用包括:上传数据的管理、上传行为的定义、上传结......
  • centos安装docker脚本
    #!/bin/bash#安装Docker脚本#检查是否为root用户,因为某些命令需要root权限if["$(id-u)"!="0"];thenecho"该脚本必须以root权限运行"1>&2exit1fi#更新系统(可选)echo"正在更新系统..."yumupdate-y#安装必要......
  • Docker 之虚悬镜像
    虚悬镜像:仓库名、标签都是<none>​的镜像,俗称danglingimage。在日常工作中,有很小的概率会出现该类镜像,原因可能是Dockerfile有问题,或者构建和删除镜像的时候,出现一些错误。出现了该种镜像后,为了避免造成影响,建议删除。‍实践我们写一个虚悬镜像:$mkdir/myfile/test......
  • docker进入容器运行命令
    Docker容器的基本操作在深入讨论如何进入容器并运行命令之前,让我们先回顾一下Docker容器的一些基本操作:列出容器:使用dockerps命令列出当前正在运行的容器。如果你还想看到已经停止的容器,可以添加-a或--all选项。启动容器:使用dockerstart命令加上容器ID或名称来启动一个......