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

docker build构建aspnetapp镜像提示overlay2路径下passwd文件不存在如何解决

问题成因

该报错是Docker运行引擎架构与镜像架构不匹配导致的:
你Dockerfile中使用的mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903、mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903都是Windows平台专属的nanoserver镜像,而你的Docker Desktop当前运行在Linux容器模式下,Linux的overlay2存储驱动解析Windows镜像的文件系统时,找不到Linux环境下必备的/etc/passwd文件,最终触发WORKDIR指令执行失败。你之前尝试的清理缓存、重启服务、重装Docker都没有解决架构不匹配的核心问题,所以无效。

解决方法
  • 方案1(推荐,适配你当前Dockerfile):切换Docker Desktop到Windows容器模式
    右键点击系统托盘的Docker Desktop图标,选择「Switch to Windows containers...」,等待引擎重启完成后,重新执行docker build -t aspnetapp .命令即可正常构建。
  • 方案2(适配Linux容器模式):替换基础镜像为Linux版本
    如果你需要使用Linux容器运行应用,修改Dockerfile中的两行基础镜像声明即可:
    # 把原来的nanoserver镜像替换为通用Linux版镜像
    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
    # 中间其余内容不变
    FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
    
  • 校验操作:如果修改后仍报错,可执行docker info查看当前Docker运行的容器架构,和你使用的基础镜像架构保持一致即可。

内容的提问来源于stack exchange,提问作者Anthony Earl R. Cuartero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:45:04