创建.NET CORE 2.1(预览版)Web应用后Docker运行报错:microsoft/aspnetcore:2.1镜像未找到
解决.NET Core 2.1预览版Docker镜像找不到的问题
这个问题我之前也碰到过,核心原因是你用的是预览版的.NET Core 2.1 SDK,但Dockerfile里指定的是正式版的运行时镜像标签,而当时2.1的正式版镜像还没发布,所以Docker找不到对应的manifest。
给你几个具体的解决步骤:
- 首先打开项目根目录下的
Dockerfile,检查里面的基础镜像配置 - 如果你的Dockerfile是多阶段构建(大部分.NET Core项目默认是),要同时修改构建阶段和运行阶段的镜像:
- 构建阶段(用SDK编译代码)改成对应预览版的SDK镜像:
FROM microsoft/dotnet:2.1-sdk-preview2-008530(完全匹配你的dotnet --version输出的版本号) - 运行阶段(部署运行时)改成对应预览版的ASP.NET Core镜像:
FROM microsoft/aspnetcore:2.1-preview2
- 构建阶段(用SDK编译代码)改成对应预览版的SDK镜像:
- 修改完成后,重新执行构建命令:
docker-compose build blobtest或者直接用docker build .(如果是单独构建这个服务)
举个修改后的Dockerfile示例:
# 构建阶段 FROM microsoft/dotnet:2.1-sdk-preview2-008530 AS build WORKDIR /src COPY ["BlobTest/BlobTest.csproj", "BlobTest/"] RUN dotnet restore "BlobTest/BlobTest.csproj" COPY . . WORKDIR "/src/BlobTest" RUN dotnet build "BlobTest.csproj" -c Release -o /app # 发布阶段 FROM build AS publish RUN dotnet publish "BlobTest.csproj" -c Release -o /app # 运行阶段 FROM microsoft/aspnetcore:2.1-preview2 AS base WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "BlobTest.dll"]
为什么要这么改?因为预览版的.NET Core SDK和运行时镜像不会使用正式版的标签(比如:2.1),必须明确指定预览版的标签才能拉取到对应的镜像文件。
内容的提问来源于stack exchange,提问作者Yuvi
相关产品推荐
相关产品推荐

