拉取后 ACI 缓存 docker 映像



>主要是我有一个安装了MSBuild工具和Vsts代理的docker容器。由于Visual Studio安装程序的原因,构建docker容器需要相当长的时间。(本地计算机45分钟)

在 Azure DevOps 中,我创建了一个管道,该管道使用此映像来启动、生成和部署我们的应用程序。完成构建后,它应该停止容器,直到下一个请求。

我认为使用 ACI 会使我当前的本地构建服务器过时,因为我发现让一个成熟的 Windows 服务器在其上运行 docker 而容器也运行一个完整的 Windows 服务器有点愚蠢。 要么我错过了什么,要么在物理服务器上运行 msbuild 和代理违背了整个 docker 解决方案的目的。

另一方面,删除此物理服务器并将其替换为 ACI 应该可以解决问题。使用 Azure CLI 启动和停止此容器可由 Azure DevOps 处理。这里唯一的问题是容器实例是无状态的,这会产生令人讨厌的副作用,即每次启动实例时都会拉取映像,这需要半小时才能完成。由于成本问题,保持实例运行是不行的。 如果每次重新启动时仅缓存并使用拉取的映像,这将是最终的解决方案,但遗憾的是事实并非如此。

我在初步调查中遗漏了什么还是做了一些错误的假设?

不,可以在 Azure DevOps 中缓存,它已经缓存了一些基本映像,可以查询此 API 以查找它们。

Azure 容器实例使用缓存机制来帮助加快速度 基于常见 Windows 基础映像构建的映像的容器启动时间, 包括 Nanoserver:1809、ServerCore:LTSC2019 和 ServerCore:1809。 常用的 Linux 镜像如 ubuntu:1604 和 alpine:3.6 也是 缓存。

阅读:
https://learn.microsoft.com/bs-latn-ba/azure/container-instances/container-instances-faq#what-windows-base-os-images-are-supported
https://learn.microsoft.com/bs-latn-ba/azure/container-instances/container-instances-troubleshooting?view=azurermps-6.13.0#cached-images

最新更新