【问题标题】:Azure DevOps hosted-agent failed to pull windows:2004Azure DevOps 托管代理无法拉取 windows:2004
【发布时间】:2021-01-25 22:42:58
【问题描述】:

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

例外:

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

目前,创建构建机器不是一种选择。

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

【问题讨论】:

  • 你检查过这个doc吗?
  • @VitoLiu-MSFT 是的,但它对我有什么帮助?我错过了什么吗?

标签: azure docker azure-devops azure-devops-self-hosted-agent


【解决方案1】:

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

恐怕没有这种方法可以从托管代理中提取mcr.microsoft.com/windows:2004 docker 映像。

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

Windows Server 容器和底层主机共享一个 内核,容器的基础镜像必须与主机的基础镜像匹配。如果 版本不同,容器可能会启动,但功能齐全 无法保证。

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

所以,我们无法从托管代理 windows-latestwindows-2019 (1809) 中提取图像 windows:2004 (2004)。我们只能使用托管代理拉取图像windows:1809

docker pull mcr.microsoft.com/windows/servercore:1809

然而,如果我使用托管代理拉取图像windows:1903,我将收到错误no matching manifest for windows/amd64...。为了验证我的回答,我使用了托管在 Windows 版本 1903(操作系统构建 18362)上的私有代理,它工作正常。

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

顺便说一句,我已经在您与私人代理的问题中测试了the link 中提到的那些解决方案。 switch to Linux containersset the "experimental": true 都不能解决这个错误。

参考链接:

List of Microsoft Windows versions

Unable to pull images from microsoft

【讨论】:

  • 这些图片何时可用?当前的托管代理基于 2 岁以上的版本,这有点奇怪
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 2019-02-20
  • 2021-02-20
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
相关资源
最近更新 更多