0

Docker 介绍了RUN --mount=type=cache哪些我可以在本地很好地工作,但我希望能够在 CI 特别是 Azure Devops 中利用它。

但是我找不到构建之间的缓存save方式。load有没有办法做到这一点?

4

1 回答 1

1

请参阅此文档

在 Microsoft 托管代理的当前设计中,每个作业都被分派到新配置的虚拟机(基于从 azure-pipelines-image-generation 存储库模板生成的映像)。这些虚拟机在作业完成后被清理,不会持久化,因此不能重复用于后续作业。虚拟机的短暂性阻止了缓存 Docker 层的重用。

因此,当您使用 Microsoft 托管代理时,其他构建无法使用 VM 上的本地 docker 缓存。

以下是一些替代方法:</p>

  1. 您可以使用自托管代理来执行 docker 构建过程。多个构建可以共享本地缓存。

  2. 您还可以使用缓存任务并将docker save/load commonds保存的 docker 层上传到 azure devops 服务器并在未来运行时恢复它。

  3. 使用 docker pull 从远程仓库拉取镜像。使用--cache-from指向图像。您可以将构建映像推送到远程存储库以进行下一次构建。

您可以参考此博客此票以获取更多详细信息。

于 2021-02-15T05:53:39.630 回答