Azure DevOps托管代理无法拉Windows:2004

问题描述

使用Windows-2019 hosted agent(安装了1809 Windows版本-Microsoft Windows Server 2019 Datacenter的代理)作为代理规范时,我们无法提取mcr.microsoft.com/windows:2004码头工人镜像。

例外:

enter image description here

我对this solution很熟悉(在本地工作得很好)。 但是,由于Docker Desktop没有安装在代理上,所以我无法切换到Windows容器。此外,由于需要重启,因此无法选择安装Docker Desktop。

当前,创建构建计算机是不可行的。

所以我的问题是:有一种方法可以从托管代理中提取mcr.microsoft.com/windows:2004码头工人镜像?

解决方法

所以我的问题是:有一种方法可以从托管代理中提取mcr.microsoft.com/windows:2004 docker映像?

恐怕没有办法从托管代理中提取mcr.microsoft.com/windows:2004码头工人镜像。

那是因为Matching container host version with container image versions

Windows Server容器和基础主机共享一个 内核,容器的基本映像必须与主机的基本映像匹配。如果 版本不同,容器可能会启动,但功能已满 不能保证。

换句话说,Windows要求主机OS版本与容器OS版本匹配。如果要基于更新的Windows版本运行容器,请确保您具有等效的主机版本。否则,您可以使用Hyper-V隔离在新的主机版本上运行旧容器。

因此,我们无法从托管代理windows:20042004({{1} })。我们只能使用托管代理拉映像windows-latest

windows-2019

enter image description here

但是,如果我使用托管代理拉出图像1809,则会收到错误windows:1809。为了验证我的答案,我使用了私有代理,该私有代理托管在Windows版本docker pull mcr.microsoft.com/windows/servercore:1809 (操作系统内部版本windows:1903)上。

总而言之,我们无法在托管代理(1809)上提取windows:2004(2004)图像。此请求的解决方法是使用私有代理。

顺便说一句,我已经与私人代理人测试了您的问题中the link中提到的那些解决方案。 no matching manifest for windows/amd64...1903都无法解决此错误。

参考链接:

List of Microsoft Windows versions

Unable to pull images from microsoft