我目前正在为我的Raspberry构建.Net Core应用程序,这是一种ARM处理器体系结构。为此,我使用的是.net核心臂模板和类似这样的dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch-arm32v7
RUN apt-get update && apt-get install -y curl python-numpy python-pil
WORKDIR /tmp
RUN curl -LO https://archive.raspberrypi.org/debian/pool/main/r/rtimulib/librtimulib-dev_7.2.1-3_armhf.deb \
&& curl -LO https://archive.raspberrypi.org/debian/pool/main/r/rtimulib//librtimulib-utils_7.2.1-3_armhf.deb \
&& curl -LO https://archive.raspberrypi.org/debian/pool/main/r/rtimulib/librtimulib7_7.2.1-3_armhf.deb \
&& curl -LO https://archive.raspberrypi.org/debian/pool/main/r/rtimulib/python-rtimulib_7.2.1-3_armhf.deb \
&& curl -LO https://archive.raspberrypi.org/debian/pool/main/p/python-sense-hat/python-sense-hat_2.1.0-1_armhf.deb
RUN dpkg -i librtimulib-dev_7.2.1-3_armhf.deb librtimulib-utils_7.2.1-3_armhf.deb librtimulib7_7.2.1-3_armhf.deb python-rtimulib_7.2.1-3_armhf.deb python-sense-hat_2.1.0-1_armhf.deb
WORKDIR /App
COPY /DockerContent .
ENTRYPOINT ["dotnet", "Mmu.Ptm.dll"]
一切正常,但是当我在Azure DevOps代理上运行docker build时,出现以下错误:
搜索此错误,答案实际上似乎是处理器体系结构中的一个问题,例如,此问题:https://forum.openmediavault.org/index.php/Thread/25482-Docker-container-start-up-error/
这使我想到了一个问题:我知道docker仅使用主机OS的内核,这就是为什么我无法将Windows-Build Images与Linux以及其他方法混合使用的原因。但是,处理器体系结构(ARM,x86等)如何影响构建过程?我会理解,我需要一台ARM机器来构建ARM模板,但是当我在开发人员笔记本电脑上而不是在Azure DevOps上构建映像时,为什么它可以正常工作?