.NET Core Docker Linux-arm (Raspberry pi) 的图像

.NET Core Docker Image for Linux-arm (Raspberry pi)

我制作了一个简单的 .Net 6.0 控制台应用程序,我使用带有 linux-arm

标志的 dotnet publish 命令构建了它

dotnet pubish -c release -r linux-arm

以上生成 linux ARM dll。

然后我使用 Dockerfile

为它创建了一个镜像
FROM mcr.microsoft.com/dotnet/runtime:6.0
 COPY bin/Release/net6.0/linux-arm /MyDockerApp
 WORKDIR /MyDockerApp
   ENTRYPOINT ["dotnet", "DockerTest.dll"]

(我没有构建它,因为我的代码已经使用 dotnet publish 为 arm-v7 构建)

现在我正在尝试 运行 此图像作为我的 Raspberry pi(即 Arm/Linux/v7)的容器,但出现以下错误。

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested standard_init_linux.go:228: exec user process caused: exec format error

我如何编译它以便我可以在我的 Raspberrypi 4 上 运行 它(我不想在 Raspberry pi 上构建我的代码,我只想使用运行时)。

在你的 Dockerfile

中为你的 RaspberryPI 使用相应的 ARM .NET runtime image

例如,这个应该可行

FROM mcr.microsoft.com/dotnet/runtime:6.0.0-focal-arm32v7

而不是默认值

FROM mcr.microsoft.com/dotnet/runtime:6.0

适用于普通 PC。