Docker构建.NET 8.0应用报错:无匹配windows/amd64 10.0.20348镜像清单
解决.NET 8.0容器化构建时的manifest匹配错误
这个错误的核心原因是:你当前使用的Windows Server 2022(版本10.0.20348)对应的.NET 8.0基础镜像没有包含在通用的8.0标签的manifest列表中,微软对.NET 8的Docker镜像标签策略做了调整,需要明确指定匹配你系统版本的镜像标签。
解决方案步骤:
修改Dockerfile中的基础镜像
将原Dockerfile开头的sdk和后续可能用到的runtime镜像,替换为带Windows版本后缀的标签:- 若需要轻量的Nano Server镜像:
FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-ltsc2022 AS build # 后续的runtime镜像也对应修改,比如: FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-ltsc2022 AS base - 若需要完整的Windows Server Core镜像:
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build # 对应runtime镜像: FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 AS base
这里的
ltsc2022正是对应Windows Server 2022(版本10.0.20348)的标识。- 若需要轻量的Nano Server镜像:
验证镜像可拉取
先单独执行拉取命令确认镜像存在:docker pull mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-ltsc2022重新执行构建
修改Dockerfile后,再次运行你的构建命令即可:docker build -f Dockerfile -t my-app ..
补充说明:
.NET 7的通用标签能正常运行,是因为微软当时在通用标签中包含了更多Windows版本的manifest,但.NET 8开始要求明确指定匹配的Windows版本标签,避免不必要的镜像体积和版本兼容问题。
内容的提问来源于stack exchange,提问作者pf12345678910
相关产品推荐
相关产品推荐

