在 Intel 机器 (Mac) 上构建 ARM 架构的 Docker 镜像

问题描述 投票:0回答:2

我希望能够从我的 Mac 构建 ARM 的 Docker 映像。我知道我可以使用 QEMU 在 Mac 上运行 ARM 容器,但我不知道如何为 ARM 构建。

docker arm raspberry-pi intel dockerfile
2个回答
3
投票

现在这有点令人费解。我相信在不久的将来,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 二进制文件。


0
投票

使用 docker cli 的 buildx 插件,从具有不同架构的主机创建特定架构的映像(或多架构映像)要简单得多。例如,构建一个`linux/arm64

© www.soinside.com 2019 - 2024. All rights reserved.