containerd 镜像存储

本页面提供了关于在Docker Engine中持续集成containerd用于镜像和文件系统管理的信息。

注意

经典镜像存储和新的containerd镜像存储之间不共享镜像和容器。当你切换镜像存储时,非活动存储中的容器和镜像仍然存在,但在切换回来之前是隐藏的。

什么是containerd?

containerd 是对用于在系统上运行和管理容器的低级内核功能的抽象。它是 Docker 和 Kubernetes 等容器软件中使用的平台。

Docker Engine 已经使用 containerd 进行容器生命周期管理, 包括创建、启动和停止容器。 本页描述了 Docker 的 containerd 集成的下一步: containerd 镜像存储。

图像存储

镜像存储是负责在文件系统上推送、拉取和存储镜像的组件。 经典的Docker镜像存储在支持的镜像类型上有限制。 例如,它不支持包含清单列表的镜像索引。 当你创建多平台镜像时,镜像索引会解析镜像的所有平台特定变体。 在构建带有证明的镜像时,也需要镜像索引。

containerd 镜像存储扩展了 Docker 引擎可以原生交互的镜像类型范围。虽然这是一个低层次的架构变化,但它是解锁一系列新用例的先决条件,包括:

  • 构建多平台镜像 和带有证明的镜像
  • 支持使用具有独特特性的containerd快照器,例如 stargz 用于容器启动时的延迟拉取镜像, 或 nydusdragonfly 用于点对点的镜像分发。
  • 能够运行 Wasm 容器

启用 containerd 镜像存储

Docker Desktop 4.34 及更高版本默认启用了 containerd 镜像存储,但仅适用于全新安装或执行出厂重置的情况。如果您从早期版本的 Docker Desktop 升级,或者如果您使用的是旧版本的 Docker Desktop,则必须手动切换到 containerd 镜像存储。

要在 Docker Desktop 中手动启用此功能:

  1. 导航到 Docker Desktop 中的设置
  2. 常规选项卡中,勾选使用containerd拉取和存储镜像
  3. 选择应用并重启

要禁用 containerd 镜像存储,请清除使用 containerd 拉取和存储镜像复选框。

构建多平台镜像

术语“多平台镜像”指的是针对多种不同架构的镜像包。 开箱即用,Docker Desktop 的默认构建器不支持构建多平台镜像。

$ docker build --platform=linux/amd64,linux/arm64 .
[+] Building 0.0s (0/0)
ERROR: Multi-platform build is not supported for the docker driver.
Switch to a different driver, or turn on the containerd image store, and try again.
Learn more at https://docs.docker.com/go/build-multi-platform/

启用 containerd 镜像存储允许您构建多平台镜像并将其加载到本地镜像存储中:

反馈

感谢您试用containerd提供的新功能。请通过反馈表单提供反馈或报告您发现的任何错误。