mcr.microsoft.com是否支持ASP.NET Core 2?Jenkins构建Docker报错
你遇到的报错核心是两个问题,和MCR镜像前缀调整本身没有直接关系:
- 构建实际调用的Dockerfile和你修改后的版本不一致
你贴出的Dockerfile里拉取的是mcr.microsoft.com/dotnet/sdk:2.1,但报错信息显示构建时尝试拉取的是mcr.microsoft.com/aspnetcore-build:2,说明Jenkins构建节点并没有读取到你修改后的Dockerfile,大概率是构建路径配置错误、旧Dockerfile缓存没有清理、或者构建脚本写死了拉取旧镜像名。 - 你用的镜像名和标签已经被废弃
aspnetcore-build是.NET Core 2.0时代的临时镜像命名,微软早就将所有.NET相关镜像统一归类到dotnet仓库组下,SDK镜像统一使用dotnet/sdk命名,ASP.NET Core运行时镜像统一使用dotnet/aspnet命名。同时.NET Core 2.1已经在2021年8月正式终止官方支持,MCR源中已经移除了2这类大版本浮动标签,只保留具体的补丁版本固定标签。
接下来是可选的两种解决方案:
临时解决方案(不升级.NET版本)
- 先排查Jenkins构建配置,确认构建时读取的是你修改后的Dockerfile,清理构建节点的Docker缓存,避免旧配置残留
- 将镜像标签替换为具体的补丁版本号,示例如下:
# 2.1版本SDK镜像 FROM mcr.microsoft.com/dotnet/sdk:2.1.818 AS build # 2.1版本ASP.NET Core运行时镜像 FROM mcr.microsoft.com/dotnet/aspnet:2.1.30
注意:该方案仅能保证镜像能正常拉取,.NET Core 2.1已经停止安全更新,生产环境使用存在较高安全风险
长期推荐方案
升级你的ASP.NET Core项目到当前仍在支持期的LTS版本,比如.NET 6、.NET 8,这类版本的镜像维护完善,会定期更新安全补丁,也支持大版本浮动标签使用,长期维护成本更低。
内容的提问来源于stack exchange,提问作者GoonGamja
相关产品推荐
相关产品推荐

