Share feedback
Answers are generated based on the documentation.

containerd 镜像存储

Docker Desktop 默认使用 containerd 作为其镜像存储。镜像存储是负责在文件系统上推送、拉取和存储镜像的组件。containerd 镜像存储支持多平台镜像、镜像证明以及替代快照器等特性。

什么是 containerd

containerd 是一个容器运行时,为容器生命周期和镜像管理提供轻量级、一致的接口。Docker Engine 在底层使用它来创建、启动和停止容器。

什么是 containerd 镜像存储?

镜像存储是负责推送、拉取和在文件系统上存储镜像的组件。

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

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

经典镜像存储

经典镜像存储是 Docker 的旧版存储后端,已被 containerd 镜像存储取代。它不支持镜像索引或清单列表,因此你无法在本地加载多平台镜像,也无法构建带有证明的镜像。

大多数用户没有理由使用经典镜像存储。它适用于你需要匹配旧行为或存在兼容性要求的情况。

切换镜像存储

containerd 镜像存储在 Docker Desktop 4.34 版本及更高版本中默认启用。要在镜像存储之间切换:

  1. 导航到 Docker Desktop 中的 Settings
  2. General 选项卡中,勾选或清除 Use containerd for pulling and storing images 选项。
  3. 选择 Apply
Note

Docker Desktop 为经典镜像存储和 containerd 镜像存储维护独立的镜像存储。 在两者之间切换时,非活动存储中的镜像和容器仍保留在磁盘上,但会被隐藏,直到您切换回来。

构建多平台镜像

containerd 镜像存储让你可以构建多平台镜像并将它们加载到本地镜像存储中:

使用经典镜像存储不支持构建多平台镜像:

$ 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/