containerd 镜像存储

此页面提供有关在Docker Engine中集成containerd以进行镜像和文件系统管理的持续集成的信息。

注意

经典镜像存储和新的containerd镜像存储之间不共享镜像和容器。当您切换镜像存储时,来自非活动存储的容器和镜像仍然存在,但会隐藏起来,直到您切换回来。

什么是containerd?

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

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

镜像存储

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

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

  • 构建多平台镜像和带有声明的镜像
  • 支持使用具有独特特性的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.dockerd.com.cn/go/build-multi-platform/

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

反馈

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