Raspberry pi上的Docker容器4:standard_init_linux.go:228:Exec用户流程引起的:exec格式错误

发布于 2025-01-21 14:48:29 字数 1302 浏览 1 评论 0原文

首先:我对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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

入画浅相思 2025-01-28 14:48:29

您的架构设置错误。您正在以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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文