Raspberry pi上的Docker容器4:standard_init_linux.go:228:Exec用户流程引起的:exec格式错误
首先:我对Docker并建立自己的图像等非常新鲜,所以请,如果我做出一个明显的错误,请不要发疯:D。 我已经尝试了所有发现的“解决方案”,但我要么没有正确地理解它,要么在我的情况下它不起作用。
我在Visual Studio 2022上制作了Dotnet Core WebApp(.net6.0),但我无法在Raspberry Pi 4上运行容器。它总是立即停止容器,并说
standard_init_linux.go:228: exec user process caused: exec format error
我的Dockerfile看起来像这样:
FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0-focal AS build
WORKDIR /src
COPY ["WebApp/WebApp.csproj", "WebApp/"]
COPY ["WebApp.Models/WebAppModels.csproj", "WebApp.Models/"]
RUN dotnet restore "WebApp/WebApp.csproj" -r linux-arm64
COPY . .
WORKDIR "/src/WebApp"
RUN dotnet build "WebApp.csproj" -c Release -o /app/build -r linux-arm64
FROM build AS publish
RUN dotnet publish "WebApp.csproj" -c Release -o /app/publish -r linux-arm64
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApp.dll"]
在Visual Studio中,我在Visual Studio中
Platform target = ARM64
我尝试了一下。使用 targetRuntime = win-arm64 通过CMD使用Visual Studio的发布功能,
我尝试了 - 平台Linux/ARM64
这两个图像都不会在我的覆盆子上运行。
有人知道如何使这个工作吗?
谢谢
first of all: I'm pretty new to docker and building my own images etc. So please, if I did an obvious mistake don't go crazy :D.
I already tried every "solution" I found but either i didn't get it right or it won't work in my case.
I made a dotnet core webapp (.net6.0) on Visual Studio 2022 but i cannot run the container on my Raspberry Pi 4. It always stops the containers immediately and says
standard_init_linux.go:228: exec user process caused: exec format error
My dockerfile looks like this:
FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0-focal AS build
WORKDIR /src
COPY ["WebApp/WebApp.csproj", "WebApp/"]
COPY ["WebApp.Models/WebAppModels.csproj", "WebApp.Models/"]
RUN dotnet restore "WebApp/WebApp.csproj" -r linux-arm64
COPY . .
WORKDIR "/src/WebApp"
RUN dotnet build "WebApp.csproj" -c Release -o /app/build -r linux-arm64
FROM build AS publish
RUN dotnet publish "WebApp.csproj" -c Release -o /app/publish -r linux-arm64
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApp.dll"]
In Visual Studio i set
Platform target = ARM64
I tried it using the publish function of Visual Studio with TargetRuntime = win-arm64
Via CMD i tried docker build with --platform linux/arm64
Both images won't run on my Raspberry.
Does anybody know how to get this working?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的架构设置错误。您正在以ARM64的形式发布它,但Raspberry Pi是ARM32。如果您只需在码头中使用“ ARM32”搜索“ ARM64”,则应该有更好的运气。
You've got the wrong architecture set. You're publishing it as arm64 but Raspberry Pi is arm32. You should have better luck if you just search-and-replace "arm64" with "arm32" in your Dockerfile.