containerd 镜像存储

本页面提供了有关 Docker Engine 中正在进行的 containerd(用于镜像和文件系统管理)集成的信息。

注意

经典镜像存储和新的 containerd 镜像存储之间不共享镜像和容器。切换镜像存储时,非活动存储中的容器和镜像将保留但被隐藏,直到您切换回该存储。

什么是 containerd?

containerd 是一种用于抽象底层内核功能的机制,这些功能用于在系统上运行和管理容器。 它是一种在 Docker 和 Kubernetes 等容器软件中使用的平台。

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

镜像仓库

镜像存储是负责推送、拉取并将镜像存储在文件系统上的组件。 传统的 Docker 镜像存储在支持的镜像类型上存在限制。 例如,它不支持镜像索引(image indices),即包含清单列表(manifest lists)的结构。 当您创建多平台镜像(例如),镜像索引会解析该镜像的所有平台特定变体。 在使用证明(attestations)构建镜像时,也需要使用镜像索引。

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 中提供的新功能。您可以通过在以下链接的 issues 跟踪器中提交反馈或报告发现的任何问题: 反馈表单