containerd 镜像存储

Docker Desktop 正在过渡到使用 containerd 进行镜像和文件系统管理。本页面概述了 containerd 镜像存储带来的优势、设置过程和新功能。

注意

Docker Desktop 为传统镜像存储和 containerd 镜像存储维护独立的存储。在它们之间切换时,来自非活动存储的镜像和容器会保留在磁盘上,但会隐藏起来,直到您切换回原来的存储。

什么是 containerd

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

Docker Desktop 对 containerd 的持续集成现在扩展到了镜像存储,提供了更高的灵活性和现代镜像支持。

什么是 containerd 镜像存储?

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

经典的 Docker 镜像存储支持的镜像类型有限。例如,它不支持包含 manifest list 的镜像索引。例如,当您创建多平台镜像时,镜像索引会解析镜像所有特定于平台的变体。构建带证明的镜像时,也需要镜像索引。

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

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

启用 containerd 镜像存储

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

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

  1. 在 Docker Desktop 中导航到Settings(设置)。
  2. General(通用)选项卡中,勾选Use containerd for pulling and storing images(使用 containerd 拉取和存储镜像)。
  3. 选择Apply & Restart(应用并重启)。

要禁用 containerd 镜像存储,请取消勾选Use containerd for pulling and storing images(使用 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.net.cn/go/build-multi-platform/

启用 containerd 镜像存储使您能够构建多平台镜像并将其加载到本地镜像存储中

页面选项