【问题标题】:'No matching manifest for unknown in the manifest list entries' when pull nanoserver:1903拉 nanoserver:1903 时,“清单列表条目中没有匹配的清单”
【发布时间】:2019-08-08 06:34:49
【问题描述】:

我想在 windows 10 pro 上为我的 windows 容器拉microsoft-windows-nanoserver

我的环境:

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就ok了:

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 中有一张桌子:

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's version 还是my contaner's distrubtion's version?你可以看到我的windows主机操作系统是17763,这可能是我无法拉动1903的原因还是其他原因?

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

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

【问题讨论】:

    标签: docker docker-for-windows


    【解决方案1】:

    我找到答案了。

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

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

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

    2. 我们不得不做上面的原因,我看到microsoft official explainaiton

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

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

      看来,微软还在改进windows容器特性,所以如果需要使用基于较新windows的容器,我们必须升级宿主windows操作系统(可能也与一些hyper-v升级有关猜)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-12
      • 2020-03-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2021-04-03
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多