azure - Azure DevOps 托管代理无法拉取 windows:2004
问题描述
当使用Windows-2019
托管代理(安装了 1809 windows 版本的代理 - Microsoft Windows Server 2019 Datacenter)作为代理规范时,我们无法拉取mcr.microsoft.com/windows:2004
docker 镜像。
例外:
我熟悉这个解决方案(在本地完美运行)。但是,由于 Docker Desktop 没有安装在代理上,我无法切换到 Windows 容器。此外,安装 Docker Desktop 不是一个选项,因为需要重新启动。
目前,创建构建机器不是一种选择。
所以我的问题是:有一种方法可以mcr.microsoft.com/windows:2004
从托管代理中提取 docker 映像吗?
解决方案
所以我的问题是:有一种方法可以从托管代理中提取 mcr.microsoft.com/windows:2004 docker 映像吗?
恐怕没有这种方法可以mcr.microsoft.com/windows:2004
从托管代理中提取 docker 映像。
那是因为将容器主机版本与容器映像版本匹配:
Windows Server 容器和底层主机共享一个内核,容器的基本映像必须与主机的基本映像匹配。如果版本不同,容器可能会启动,但不能保证功能完整。
换句话说,Windows 要求主机操作系统版本与容器操作系统版本相匹配。如果您想运行基于较新 Windows 构建的容器,请确保您具有等效的主机构建。否则,您可以使用 Hyper-V 隔离在新的主机版本上运行旧容器。
因此,我们无法从托管代理或( ) 中提取图像windows:2004
( )。我们只能使用托管代理提取图像。2004
windows-latest
windows-2019
1809
windows:1809
docker pull mcr.microsoft.com/windows/servercore:1809
但是,如果我windows:1903
使用托管代理提取图像,我会收到错误消息no matching manifest for windows/amd64...
。为了验证我的答案,我使用了托管在 Windows 版本1903
(OS build 18362
)上的私有代理,它工作正常。
总之,我们无法在托管代理 (1809) 上拉取 windows:2004 (2004) 图像。此请求的解决方法是使用私有代理。
顺便说一句,我已经测试了您与私人代理的问题中的链接中提到的那些解决方案。也switch to Linux containers
不能解决set the "experimental": true
这个错误。
参考链接:
推荐阅读
- python - 如何在python中将文本的某一部分从一个文件复制到另一个文件
- docker - Ansible/Rundeck 中的 Propper 容器日志监控
- postgresql - 为什么在索引扫描期间读取了这么多页面(Postgres 11.2)?
- python - 如何在模型 Django 中定义特殊归档
- latex - 如何将乳胶代码放在 kable 标题中?
- web-scraping - 网页抓取:匹配不同来源上具有不同名称的相同项目
- python - 如何在python中将字符串的最后一个字母大写?
- sql - 通过公共角色登录
- javascript - React 功能父组件共享通用 onChange 函数,无需冗余代码
- java - 在 Java 中审计 gRPC 调用