我们有一个运行Windows Server 2019 Standard版本1809(操作系统内部版本17763.678)的内部版本服务器。我们正在此服务器上运行旧的docker映像,并且它们使用Windows Server 2016作为其基本映像。因此,docker容器在Hyper-V模式下运行,这使得构建时间比以前减少了约5倍。
有两件事使更新这些图像有些复杂:
我知道我不能使用window / servercore:1809作为基础映像在开发机器上构建docker映像,因为主机系统必须与容器OS相同或更高。
作为一种解决方法,我认为我可以直接在服务器上构建新映像。我只需要将所需的所有文件传输到服务器,然后将其推入基础映像窗口/ servercore:1809。当我尝试拉基本图像时,这是一个问题:
> mcr.microsoft.com/windows/servercore:1809
1809: Pulling from windows/servercore
no matching manifest for unknown in the manifest list entries
当我将1809更改为1803时,该命令运行正常。
是否有某种方法可以将不兼容的docker映像拉到我的计算机上,然后将其推到可以正常工作的计算机上?我发现docker pull
具有实验功能{{1 }},但这似乎仅用于在Windows上拉Linux映像,反之亦然。
我们很可能会把我们的开发机器升级到1809年,这将为我解决问题。我仍然想知道是否有解决方案。
我还检查了清单实际上在说什么。如果我们首先为docker cli启用了实验性功能,请编辑$ HOME / .docker / config.json文件并添加以下行:
--platform
我们可以像这样检查图像的清单:
"experimental": "enabled"
我认为这是告诉docker映像所需的最低版本的信息:
docker manifest inspect -v mcr.microsoft.com/windows/servercore:1809
如果我对1803图像执行相同操作,则会显示"platform": {
"architecture": "amd64",
"os": "windows",
"os.version": "10.0.17763.678"
}
,与我的计算机上的版本匹配。