containerd
尽管 Docker 是一个单体系统,但是各个功能具有很好的接偶。并且也被完全标准化了(OCI 标准):
其中 containerd 独立负责容器运行时(管理容器运行时)和各个容器的生命周期(创建、启动、停止、中止、信号处理、删除等),而像构建、卷管理、日志等不属于容器运行时的内容由 Docker Daemon 的其他模块处理。
任何实现了containerd shim API的运行时都可以作为 containerd 的容器运行时,默认的实现就是 runc。所谓的容器运行时就是每个容器都会启动一个 runc 来隔离执行容器: