Docker 在Raspbery Pi 3 B+;

Docker 在Raspbery Pi 3 B+;,docker,raspberry-pi,.net-core,Docker,Raspberry Pi,.net Core,我在为Raspberry Pi 3 B+模型构建工作ASP.NET核心映像时遇到问题。 每当我尝试运行应用程序时,都会收到错误消息: standard_init_linux.go:190:exec用户进程导致“exec格式错误” 但是,当我尝试从Github中预构建.NET Core Docker映像时(Docker run--rm microsoft/dotnet samples),一切正常 当我下载了相同的repo并使用docker build构建了相同的代码时-t aspnettest-f

我在为Raspberry Pi 3 B+模型构建工作ASP.NET核心映像时遇到问题。 每当我尝试运行应用程序时,都会收到错误消息:

standard_init_linux.go:190:exec用户进程导致“exec格式错误”

但是,当我尝试从Github中预构建.NET Core Docker映像时(
Docker run--rm microsoft/dotnet samples
),一切正常

当我下载了相同的repo并使用
docker build构建了相同的代码时-t aspnettest-f Dockerfile
将其推送到Raspberry,并得到与之前相同的错误:


我做错了什么?我已尝试使用提供的不同Dockerfile(如)构建示例代码,但都会产生相同的错误。

在Dockerfile中,如果在Windows下构建映像,则需要将microsoft/dotnet:2.1-runtime-AS runtime中的
替换为microsoft/dotnet:2.1-runtime-stretch-slim-arm32v7 AS runtime

构建ASP.NET Core应用程序时,ARM32的运行时映像为microsoft/dotnet:2.1-aspnetcore-runtime-stretch-slim-arm32v7

在覆盆子上建立图像应该很好

这是因为
microsoft/dotnet:2.1-runtime
是多拱形的,
docker build
选择与当前处理器架构匹配的映像。因此,在Windows下构建时,生成的图像将用于amd64

更新:

现在,我们可以使用Microsoft容器注册表中的以下图像:

.NET核心2.2:

  • mcr.microsoft.com/dotnet/core/runtime:2.2-stretch-slim-arm32v7
  • mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim-arm32v7
.NET核心3.1:

  • mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim-arm32v7
  • mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim-arm32v7

也许这可以帮助您:谢谢,这正是我第一次需要解释为什么multi-arch runtime不适用于我的原因。