[英]'No matching manifest for unknown in the manifest list entries' when pull nanoserver:1903
我想為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可以:
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 docker host os's version
還是my contaner's distrubtion's version
? 您可以看到我的Windows主機操作系統是17763
,這可能是我無法拉1903
或其他原因的原因?
另外,如果以上猜測是正確的,那么為什么會發生這種情況? 據我所知,容器只是共享主機的內核,不應該關心的操作系統版本,同時, docker for windows
上windows10
使用hyper-v
它為什么關心我的Windows操作系統的版本?
我真的不想一次又一次升級我的操作系統,如果我想使用新版本的容器...我希望我的猜測是錯誤的,我錯過了什么嗎?
我找到答案。
執行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,必須將10.0.18362.239
升級到至少10.0.18362.239
才能使用nanoserver:1903
。
之所以必須這樣做,我看到了微軟官方的解釋 :
Windows Server 2016和Windows 10周年更新(均為版本14393)是最早可以構建和運行Windows Server容器的Windows版本。 使用這些版本構建的容器可以在較新的版本(例如Windows Server 1709版)上運行,但是在開始之前需要了解一些事項。
在改進Windows容器功能時,我們不得不進行一些可能影響兼容性的更改。 較舊的容器將在具有Hyper-V隔離的較新主機上運行相同的容器,並使用相同(較舊)的內核版本。 但是,如果要基於更新的Windows版本運行容器,則只能在更新的主機版本上運行容器。
從看來,微軟仍在改善Windows容器功能的過程中,因此,如果需要使用基於較新Windows的容器,我們必須升級主機Windows操作系統(我想可能也與某些Hyper-V升級有關)。
非常感謝您分享答案! 我遇到了同樣的問題,但是在使用其他圖像時,我浪費了大量時間試圖找到有關此錯誤的任何信息,直到達到此為止。
我希望其他用戶可以給您投票,因為這確實有用:)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.