为Windows设备开发IoT Edge模块教程构建错误

问题描述

我已按照教程Tutorial: Develop IoT Edge modules for Windows devices

中的所有步骤进行操作

我已登录docker桌面。

但是,当我尝试构建和发布时,在输出窗口中出现以下错误

> DOCKER_HOST: 
DOCKER_TLS_VERIFY: 
DOCKER_CERT_PATH: 
Additional Env Variables: 
------ Build and Push IoT Edge Modules started: Platform: Windows Amd64,Configuration: Release ------
The deployment manifest is generated at C:\Users\bar\source\repos\AzureIotEdgeApp3\config\deployment.windows-amd64.json
docker build --rm -f "C:\Users\bar\source\repos\IotEdgeModule3\Dockerfile.windows-amd64" -t FOO.azurecr.io/iotedgemodule3:0.0.1-windows-amd64  "C:\Users\bar\source\repos\IotEdgeModule3"
#2 (internal) load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s
#1 (internal) load build deFinition from Dockerfile.windows-amd64
#1 transferring dockerfile: 46B 0.0s done
#1 DONE 0.1s
#3 (internal) load Metadata for mcr.microsoft.com/dotnet/core/runtime:3.1-n...
#3 DONE 0.0s
#4 (internal) load Metadata for mcr.microsoft.com/dotnet/core/sdk:3.1-nanos...
#4 DONE 0.0s
#5 (stage-1 1/3) FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-...
#5 CACHED
#9 (internal) load build context
#9 transferring context: 1.20kB 0.0s done
#9 DONE 0.2s
#6 (stage-1 2/3) workdir /app
#6 ERROR: open /var/lib/docker/overlay2/78d2cb8633edf0eef3af53faff16f4b1570ca332555085bcadcb185c037611dd/merged/etc/passwd: no such file or directory
#7 (build-env 1/6) FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-18...
#7 resolve mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1809@sha256:aeab6d06ece872b88e59c4da0a98aa64e637aa979a161923658c5f7ef74b9699 done
#7 sha256:918abb37d3f2ac5ee5f9ad3d2017bebcdc353838e7097f5be7fda8c7df590489 4.36kB / 4.36kB done
#7 sha256:aeab6d06ece872b88e59c4da0a98aa64e637aa979a161923658c5f7ef74b9699 3.43kB / 3.43kB done
#7 CANCELED

 > (stage-1 2/3) workdir /app:

Failed to solve with frontend dockerfile.v0: Failed to build LLB: open /var/lib/docker/overlay2/78d2cb8633edf0eef3af53faff16f4b1570ca332555085bcadcb185c037611dd/merged/etc/passwd: no such file or directory
(ERROR): Build docker image Failed: #2 (internal) load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s
#1 (internal) load build deFinition from Dockerfile.windows-amd64
#1 transferring dockerfile: 46B 0.0s done
#1 DONE 0.1s
#3 (internal) load Metadata for mcr.microsoft.com/dotnet/core/runtime:3.1-n...
#3 DONE 0.0s
#4 (internal) load Metadata for mcr.microsoft.com/dotnet/core/sdk:3.1-nanos...
#4 DONE 0.0s
#5 (stage-1 1/3) FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-...
#5 CACHED
#9 (internal) load build context
#9 transferring context: 1.20kB 0.0s done
#9 DONE 0.2s
#6 (stage-1 2/3) workdir /app
#6 ERROR: open /var/lib/docker/overlay2/78d2cb8633edf0eef3af53faff16f4b1570ca332555085bcadcb185c037611dd/merged/etc/passwd: no such file or directory
#7 (build-env 1/6) FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-18...
#7 resolve mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1809@sha256:aeab6d06ece872b88e59c4da0a98aa64e637aa979a161923658c5f7ef74b9699 done
#7 sha256:918abb37d3f2ac5ee5f9ad3d2017bebcdc353838e7097f5be7fda8c7df590489 4.36kB / 4.36kB done
#7 sha256:aeab6d06ece872b88e59c4da0a98aa64e637aa979a161923658c5f7ef74b9699 3.43kB / 3.43kB done
#7 CANCELED

 > (stage-1 2/3) workdir /app:

Failed to solve with frontend dockerfile.v0: Failed to build LLB: open /var/lib/docker/overlay2/78d2cb8633edf0eef3af53faff16f4b1570ca332555085bcadcb185c037611dd/merged/etc/passwd: no such file or directory

我正在昨天安装了最新版本的Visual Studio版本16.8.0和Docker Windows Desktop(稳定版)的Windows 10 Pro x64计算机上尝试此操作。

我尝试重新安装docker并创建Visual Studio项目,但是仍然遇到相同的错误

这是docker文件Dockerfile.windows-amd64:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1809 AS build-env
workdir /app

copY *.csproj ./
RUN dotnet restore

copY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1809
workdir /app
copY --from=build-env /app/out ./
ENTRYPOINT ["dotnet","IotEdgeModule3.dll"]

解决方法

Kgalic是正确的,我默认情况下Docker使用Linux运行。我使用系统try中的docker图标上的上下文菜单切换到Windows。