.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。
我制作了一个简单的 .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。