docker containerd runc 介绍

发布时间 2023-09-08 14:42:18作者: 属于我的梦,明明还在

containerd 提供了一组运行容器的 API。Docker 引擎通过调用 GRPC API 来启动执行进程,随后会启动管理器和执行器来负责监控和运行容器。容器最后通过runC来运行,runC 也是 Docker的另一个开源项目,它实现了 OCI 运行时标准。(OCI:开放容器协议,OCI开发了runC)。runC 是一套符合OCI标准的容器引擎;其是一个非常独立,真正创建容器的组件,runC可以独立于dockerd创建、操作容器。

 

简而言之:

containerd独立负责容器运行时和生命周期(如创建、启动、停止、中止、信号处理、删除等)containerd 只是一个守护进程

容器的实际运行时由 runc 控制

containerd 主要职责是镜像管理(镜像、元信息等)、容器执行(调用最终运行时组件执行)。

containerd-shim 调用runc启动容器,监控容器进程状态,回收容器中的相关进程等

dockerd是docker engine守护进程,dockerd启动时会启动containerd子进程,dockerd与containerd通过rpc进行通信

 

 

Docker 如何运行一个容器?

  1. Docker 引擎创建容器映像
  2. 将容器映像传递给 containerd
  3. containerd 调用 containerd-shim
  4. containerd-shim 使用 runC 来运行容器
  5. containerd-shim 允许runC在启动容器后退出