Docker - 在Mac上构建rpi图像

时间:2015-11-28 10:07:37

标签: architecture docker arm raspberry-pi

这可能更通用,并且正在为具有机器架构A的架构B构建图像。我当前想要创建具有许多Python依赖性的图像。这需要花时间在树莓派上,但在Mac上更快。当我在最后得到错误时需要重建。有没有办法在Mac上构建这个图像,然后将它拉到我的树莓派上?

2 个答案:

答案 0 :(得分:9)

模拟完整的备用架构通常非常慢。 QEMU允许您在Linux上执行此操作,并且可以集成到Docker容器中。

对于构建,您可以使用QEMU User Emulation,这比完全模拟快得多。这允许您的硬件直接执行ARM二进制文件,并用于简化交叉编译和交叉调试。

首先get VirtualBoxget Vagrant并安装。 (或使用docker-machine中的Docker Toolbox

设置您的VM

mkdir raspbian-docker
cd raspbian-docker
vagrant init debian/jessie64
vagrant up
vagrant ssh

现在您使用的是Debian Linux VM,设置了Docker主机

sudo su -
apt-get install qemu-user-static
curl https://get.docker.com/ | sh

运行raspbian环境

docker run -ti \
  --volume /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
  philipz/rpi-raspbian \
  bash

做你需要的。

然后您可以docker exportdocker import移动图片。您还可以使用the hubsetup a registry来使用push / pull

Docker Toolbox还允许您通过Mac上的VirtualBox VM轻松运行Docker,但是我遇到了比它值得更多的麻烦(当你设置了流浪汉时)。

答案 1 :(得分:0)

您可以分叉RPI的发行版构建器并根据您的需求进行自定义:https://github.com/RPi-Distro/pi-gen 它在Docker上使用qemu-debootstrap,类似于Matt的答案。

如果你打算为arm架构构建Docker镜像,qemu-debootstrap将无济于事。在这种情况下,您可以直接在ARM服务器上运行Docker构建,例如Scaleway提供的构建。

我的CI服务器运行上述组合,以使用预先加载的armh docker图像连续构建操作系统映像。然后,device-init负责将docker导出作为docker图像加载。 缺点是在首次启动后,device-init可能需要数小时才能预先加载docker镜像。