У меня есть Docker настройка на Raspberry Pi 4, и я хочу развернуть приложение ASP. NET Core 3.1 (пример приложения Razor pages mov ie) на моем Pi через Docker Hub. Когда я извлекаю образ из Docker концентратора и пытаюсь запустить его, я получаю ошибку
standard_init_linux.go:211: exec user process caused "exec format error
Я построил Docker образ на Windows 10 x64 P C. При проверке изображения Docker на моем Пи я вижу, что архитектура неверна
"Architecture": "amd64",
Должна быть возможность создания Docker ARM для целевого изображения на компьютере x64 с момента последнего год , но каким-то образом мое изображение построено для x64. Я изменил свой Dockerfile на целевой linux -arm
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["RazorMovies/RazorMovies.csproj", "RazorMovies/"]
RUN dotnet restore "RazorMovies/RazorMovies.csproj" -r linux-arm
COPY . .
WORKDIR "/src/RazorMovies"
RUN dotnet build "RazorMovies.csproj" -c Release -o /app/build -r linux-arm
FROM build AS publish
RUN dotnet publish "RazorMovies.csproj" -c Release -o /app/publish -r linux-arm
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "RazorMovies.dll"]
, и я изменил целевой параметр времени выполнения, найденный в Build -> Publi sh в VS2019, на целевой linux -arm а также как показано на рисунке ниже.
Я знаю, что мой Pi способен запускать ASP. NET Основные приложения через Docker, я запустил то же самое приложение через Docker, используя пример, найденный здесь . На этом изображении показана архитектура в виде arm вместо amd64.
docker run --rm -it -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp
Чего мне не хватает для создания моего изображения с ориентацией на ARM вместо x64?