pull nanoserver:1903时,“清单列表项中未知的清单没有匹配清单" [英] 'No matching manifest for unknown in the manifest list entries' when pull nanoserver:1903

查看:93
本文介绍了pull nanoserver:1903时,“清单列表项中未知的清单没有匹配清单"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为我的Windows容器提取 microsoft-windows-nanoserver 在Windows 10专业版上.

I want to pull microsoft-windows-nanoserver for my windows container on windows 10 pro.

我的环境:

Docker Desktop
Version: 2.0.0.3 (31259)
Channel: stable
Sha1: 8858db33c8692b69de9987a5d672798d778735b2
OS Name: Windows 10 Pro
Windows Edition: Professional
Windows Build Number: 17763

Client: Docker Engine - Community
 Version:   18.09.2
 API version:   1.39
 Go version:go1.10.8
 Git commit:6247962
 Built: Sun Feb 10 04:12:31 2019
 OS/Arch:   windows/amd64
 Experimental:  false

Server: Docker Engine - Community
 Engine:
  Version:  18.09.2
  API version:  1.39 (minimum version 1.24)
  Go version:   go1.10.6
  Git commit:   6247962
  Built:Sun Feb 10 04:28:48 2019
  OS/Arch:  windows/amd64
  Experimental: true

奇怪的是:

拉动1803可以:

C:\>docker pull mcr.microsoft.com/windows/nanoserver:1803
1803: Pulling from windows/nanoserver
e46172273a4e: Pull complete
8f7ed89f9e35: Pull complete
Digest: sha256:bc5c1878a69c4538d55bc74e50b7dbafafff1a373120e624e8bad646a0a505dc
Status: Downloaded newer image for mcr.microsoft.com/windows/nanoserver:1803

但是拉1903不好:

C:\>docker pull mcr.microsoft.com/windows/nanoserver:1903
1903: Pulling from windows/nanoserver
no matching manifest for unknown in the manifest list entries

我注意到它的dockerhub中有一个表:

What I notice is there is a table in its dockerhub:

Tags    Architecture    Dockerfile  OsVersion   CreatedTime LastUpdatedTime
1903    multiarch   No Dockerfile   10.0.18362.239  05/21/2019 18:01:07 07/09/2019 18:29:39
1803    multiarch   No Dockerfile   10.0.17134.885  10/05/2018 22:06:26 07/09/2019 17:41:59

OsVersion是指 docker host OS的版本还是我的容器的发行版本?您可以看到我的Windows主机操作系统是 17763 ,这可能是我无法提取 1903 的原因还是其他原因?

Does the OsVersion mean the docker host os's version or my contaner's distrubtion's version? You can see my windows host os is 17763, this could be the reason I cannot pull 1903 or other reason?

另外,如果以上猜测正确,那么为什么会发生这种情况?据我所知,容器只是共享主机的内核,不需要关心操作系统的版本,同时, windows10 上的 docker for windows 使用 hyper-v ,为什么要关心我的Windows操作系统的版本?

Additional, if above guess is correct, then why could this happen? As I know, container just share the host's kernel, shouldn't care the os version, meanwhile, docker for windows on windows10 use hyper-v, why it care my windows os's version?

如果我想使用新版本的容器,我真的不想一次又一次地升级我的操作系统.我希望我的猜测是错误的,我错过了什么吗?

I really don't want to upgrade my os again and again if I want to use new version container... I hope my guess is wrong, anything I miss?

推荐答案

我找到了答案.

  1. 执行 docker pull mcr.microsoft.com/windows/nanoserver:1903 后,我发现 C:\ Users \ user \ AppData \中有调试日志Local \ Docker \ log.txt ,它说:

调试:基于Windows版本10.0.18362的映像与10.0.17763主机不兼容

debug: a Windows version 10.0.18362-based image is incompatible with a 10.0.17763 host

因此,它证实了我的猜测,发生问题是因为我使用的是旧版Windows 10,必须将Windows10至少升级到 10.0.18362.239 才能使用 nanoserver:1903 .

So, it confirms my guess, my issue happens because I use an old windows 10 version, had to upgrade my windows10 to at least 10.0.18362.239 to use nanoserver:1903.

我们必须执行上述操作的原因,我看到

The reason why we had to do above, I see microsoft official explainaiton:

Windows Server 2016和Windows 10周年更新(均为版本14393)是最早可以构建和运行Windows Server容器的Windows版本.使用这些版本构建的容器可以在较新的版本(例如Windows Server 1709版)上运行,但是在开始之前,您需要了解一些知识.

Windows Server 2016 and Windows 10 Anniversary Update (both version 14393) were the first Windows releases that could build and run Windows Server containers. Containers built using these versions can run on newer releases such as Windows Server version 1709, but there are a few things you need to know before you start.

由于我们一直在改进Windows容器功能,因此我们不得不进行一些可能影响兼容性的更改.较旧的容器将在具有Hyper-V隔离的较新主机上运行相同的容器,并使用相同(较旧)的内核版本.但是,如果要基于更新的Windows构建运行容器,则只能在更新的主机构建上运行.

As we've been improving the Windows container features, we've had to make some changes that can affect compatibility. Older containers will run the same on newer hosts with Hyper-V isolation, and will use the same (older) kernel version. However, if you want to run a container based on a newer Windows build, it can only run on the newer host build.

看来,微软仍在改善Windows容器功能的过程中,因此,如果需要使用基于较新Windows的容器,我们必须升级主机Windows操作系统(也许还与某些Hyper-v升级有关猜).

From it, it seems, microsoft still in the process of improve windows container features, so if need to use container which based on newer windows, we had to upgrade host windows os(maybe also related to some hyper-v upgrade I guess).

这篇关于pull nanoserver:1903时,“清单列表项中未知的清单没有匹配清单"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆