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 如何运行一个容器?
- Docker 引擎创建容器映像
- 将容器映像传递给 containerd
- containerd 调用 containerd-shim
- containerd-shim 使用 runC 来运行容器
- containerd-shim 允许runC在启动容器后退出
docker 简单探索
docker
:Docker 客户端的可执行文件,用于与 Docker 守护进程进行交互。docker-compose
:Docker Compose 的可执行文件,用于定义和管理多个 Docker 容器的应用程序。docker-containerd
:Docker 使用的容器运行时工具,负责管理和执行容器。docker-containerd-ctr
:Docker Containerd 的命令行工具,用于与 Containerd 进行交互。docker-containerd-shim
:Docker Containerd 的 shim 进程,用于将容器的请求传递给 Containerd 容器运行时。dockerd
:Docker 守护进程的可执行文件,负责管理和运行容器。docker-init
:Docker 容器的初始化进程。docker-proxy
:Docker 网络代理,用于处理容器内部和外部网络之间的连接。
containerd 是一个面向容器的守护程序,用于管理容器生命周期。它是 Kubernetes 默认的容器运行时之一,负责管理容器的创建、启动、停止等操作。以下是一些 containerd 的基础命令: ctr: ctr 命令是 containerd 提供的命令行工具,用于与 containerd 守护进程进行交互。一些常用的 ctr 命令包括: 列出所有容器:ctr containers ls 查看容器详细信息:ctr containers inspect <container-id> 启动容器:ctr containers start <container-id> 停止容器:ctr containers stop <container-id> 删除容器:ctr containers rm <container-id> containerd: containerd 命令本身也可以用来管理 containerd 守护进程,常见的用法包括: 启动 containerd 守护进程:sudo containerd 停止 containerd 守护进程:sudo pkill containerd ctr-cri: 除了 ctr 命令外,containerd 还提供了一个用于与 CRI(Container Runtime Interface)兼容的接口的命令 ctr-cri,用于与容器运行时进行交互。 这些是一些 containerd 的基础命令,帮助你管理容器的生命周期。如果你需要了解更多关于 containerd 的命令和功能,可以查阅 containerd 的官方文档或运行 c
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫