我希望能够从我的 Mac 构建 ARM 的 Docker 映像。我知道我可以使用 QEMU 在 Mac 上运行 ARM 容器,但我不知道如何为 ARM 构建。
现在这有点令人费解。我相信在不久的将来,docker 会让这一切变得更容易。
基本上,您需要基于已经包含 qemu-arm-static 二进制文件的容器构建一个包含的容器。
您可以通过查看 Raspberry Pi 基础镜像 w/qemu-arm-static 来了解它是如何完成的,它直接使用 travis 构建镜像。
我所做的基本上是在我的树莓派上构建我的基础 docker 镜像,添加这个二进制文件并将其推送到 docker-hub。
一旦我有了该镜像作为基础,我就可以在我的 OSX 机器上构建和运行从它派生的容器,包括构建新的派生容器,然后在我的树莓派上未经修改地运行它。
在我的树莓派上,我使用这个 Dockerfile 构建了一个镜像。我从 hypriot 的基本高山图像开始。您应该能够使用您想要的任何基础图像。
FROM hypriot/rpi-alpine-scratch
RUN apk update && \
apk upgrade && \
apk add bash && \
rm -rf /var/cache/apk/*
COPY qemu-arm-static /usr/bin/qemu-arm-static
CMD ["/bin/bash"]
一旦我将其推送到 Dockerhub,我就知道有一个容器可以基于我的英特尔机器构建,并在我的树莓派上运行和构建。
我通过启动 debian i386 docker 容器、安装
qemu-user-static
并将二进制文件复制出来获得了 qemu-arm-static 二进制文件。
使用 docker cli 的 buildx 插件,从具有不同架构的主机创建特定架构的映像(或多架构映像)要简单得多。例如,构建一个`linux/arm64