Было несколько проблем, в которых я ошибался. Во-первых, я пытался создать образ arm64 на своей 64-битной Windows Dev Machine, а затем развернуть образ на arm32 Raspbian OS
, что никогда не сработает. Вы можете увидеть версию и другие сведения, выполнив следующие команды.
If it says aarch64
then it is 64 bit. If it says armv7l
then it is 32 bit. In my case, it is arm71
. So now I had to build an arm32
container images on my 64 bit Windows Host machine
and use it on my Raspberry Pi 4
. According to this do c, это определенно возможно.
Вы может создавать образы ARM32 и ARM64 на машинах x64, но вы не сможете их запустить
Запуск не был моей проблемой, так как мне просто нужно было создать образ, и я буду использовать его в своей Raspberry Число Пи. Чтобы заставить его работать, мне пришлось изменить свой Dockerfile.arm32v7
, в частности первую строку, в которой мы извлекаем базовый образ.
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim-arm32v7
WORKDIR /app
COPY --from=build-env /app/out ./
RUN useradd -ms /bin/bash moduleuser
USER moduleuser
ENTRYPOINT ["dotnet", "SendTelemetry.dll"]
Образ "build-env" должен иметь ту же архитектуру, что и основная ОС , окончательный образ должен быть архитектурой целевой ОС. После того как я внес изменения в файл docker, я изменил версию в файле module.json
внутри папки моего модуля, так что новое изображение с новым тегом будет добавлено в Реестр контейнеров, когда я использую опцию Build and Push IoT Edge Solution
после щелчка правой кнопкой мыши deployment.template.json
, а затем я использовал параметр Create Deployment for Single Device
после щелчка правой кнопкой мыши по имени устройства в Visual Studio Code. А затем, когда я слежу за устройством (параметр «Начать мониторинг встроенной конечной точки события»), я получаю следующий результат.
Support with Microsoft was really cool with this issue. They really helped me to solve this Проблема GitHub , которую я опубликовал.