拉动之后,ACI会缓存docker映像

时间:2019-05-27 11:48:14

标签: azure docker azure-devops

基本上,我有一个安装了MSBuild工具和Vsts代理的docker容器。由于Visual Studio安装程序的原因,构建Docker容器需要花费大量时间。 (在本地计算机上为45分钟)

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

我认为使用ACI将使我当前的本地构建服务器过时,因为我发现拥有一个完整的Windows服务器在其上运行docker以及容器也运行一个完整的Windows服务器有点愚蠢。 我错过了一些东西,或者运行了msbuild,并且物理服务器上的代理无法实现整个docker解决方案的目的。

另一方面,删除此物理服务器并将其替换为ACI应该可以解决问题。 Azure Devops可以使用Azure Cli启动和停止此容器。唯一的问题是容器实例是无状态的,这在每次启动实例时都需要半小时才能完成,这会带来讨厌的副作用,即每次启动映像时都会拉取映像。出于成本考虑,让实例保持运行是不可行的。 如果仅在每次重新启动时缓存并使用提取的图像,这将是最终的解决方案,但不幸的是,不是。

我是否在初步调查中错过了某些内容,或者我做了一些错误的假设?

1 个答案:

答案 0 :(得分:0)

否,您可以在Azure Devops中进行缓存,它已经缓存了一些基本映像,您可以查询this API来查找它们。

  

Azure容器实例使用缓存机制来提高速度   基于常见Windows基本映像构建的映像的容器启动时间,   包括nanoserver:1809,servercore:ltsc2019和servercore:1809。   诸如ubuntu:1604和alpine:3.6之类的常用Linux映像也   已缓存。

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