contained简介
2016年3月,Docker 1.11 已内置 containerd,如今它被彻底剥离为独立开源项目,旨在提供更开放、稳定的容器运行时基础设施
containerd是主要面向Kubernetes等上层编排系统的底层容器运行时,而非直接由最终用户操作
containerd以Daemon的形式运行在系统上,通过暴露底层的gRPC API,上层系统可以通过这些API管理机器上的容器
Docker 是一个完整的容器化平台,而 containerd 是一个专一的容器运行时
gRPC 是一个由 Google 开发的高性能、开源、跨语言的远程过程调用(RPC)框架
runC 是一个根据 OCI 标准创建和运行容器的底层命令行工具
container-shim 是一个垫片进程,用于在 runC 退出后保持容器运行并维持其 STDIO 流和状态收集,以实现容器运行时与守护进程的分离。
Docker与containerd的关系与区别
containerd是Docker的核心组件之一

主要区别
| 特点 | Docker | containerd |
| 功能范围 | 完整的容器管理平台,包括容器构建、运行、镜像管理、编排等。 | 只关注容器运行和生命周期管理(启动、停止、管理容器),不提供镜像构建、编排等功能。 |
| 适用场景 | 本地开发、CI/CD、单机容器管理、容器编排(Docker Compose) | Kubernetes、容器运行时环境,适合大规模生产环境。 |
| 镜像构建 | 支持镜像构建(通过 docker build) | 不支持镜像构建,依赖 Docker 或其他工具来构建镜像。 |
| 容器编排 | 支持 Docker Compose 和 Docker Swarm 编排。 | 不支持容器编排,通常由 Kubernetes 等管理容器编排。 |
| 资源消耗 | 较重,包含了很多功能和工具,适合开发和测试 | 轻量级,专注于容器的运行时管理,资源消耗较少。 |
| 开发者体验 | 提供完整的 CLI 和图形化工具,适合开发、调试、测试 | 提供简化的命令行接口,适合在生产环境中使用 |
目前Kubernetes集群已经默认支持containerd容器运行时
