You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8应用Linux容器基础镜像选择及拉取失败问题求助

问题描述

我有一个需运行在Linux容器中的ASP.NET Core 8 Web API,未使用Docker Desktop。当前Dockerfile基础镜像配置如下:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release

执行docker build时出现错误:

Step 1/18 : FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
8.0: Pulling from dotnet/aspnet
no matching manifest for windows/amd64 10.0.20348 in the manifest list entries

已在API项目文件中指定Linux容器,执行docker pull mcr.microsoft.com/dotnet/aspnet:8.0时也出现相同错误。

解决思路
  • 强制拉取Linux架构镜像:绕过当前Docker daemon的默认平台限制,明确指定拉取Linux版本的镜像

    • 拉取镜像时执行命令:docker pull --platform linux/amd64 mcr.microsoft.com/dotnet/aspnet:8.0
    • 修改Dockerfile,在FROM指令中添加平台声明:
      FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/aspnet:8.0 AS base
      WORKDIR /app
      EXPOSE 80
      
      FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0 AS build
      ARG BUILD_CONFIGURATION=Release
      
  • 切换Docker daemon到Linux容器模式:错误提示显示当前Docker运行在Windows容器模式,而目标.NET镜像仅提供Linux版本支持

    • 执行docker info查看OSType字段,确认当前运行环境
    • 若OSType为windows,切换到Linux上下文:
      1. 执行docker context list查看可用上下文
      2. 切换到Linux对应的上下文(如desktop-linux):docker context use desktop-linux
  • 验证WSL2配置(Windows环境下):如果通过WSL2运行Docker,需确保:

    • 执行wsl --list --verbose确认目标发行版为WSL2版本
    • Docker daemon安装在WSL发行版内部,而非Windows主机的Docker Engine

内容的提问来源于stack exchange,提问作者Alexu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:12:30