基本概念
在 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 可以在多个隔离的环境中运行不同的应用程序,从而简化了应用程序的打包、分发和部署过程。Docker 最开始只是一个单一的二进制文件,负责镜像、容器、网络、卷等资源所有的管理工作。在 Docker 后续演化的架构中,Containerd 成为 Docker Daemon 的核心子组件,承担与容器相关的实际管理工作:笔者在《【Docker】专题一:Docker 基本架构》中做过介绍,点击查看更多详细内容。
行者Sun,公众号:实施运维知识交流【Docker】专题一:Docker 基本架构
- 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