Docker – 在Mac上构buildrpi图像

这可能是更通用的,并为机器体系结构A构build一个架构B的图像。我目前想要创build一个很多的Python依赖关系的图像。 在树莓派上花费时间,但在Mac上更快。 当我得到一个错误,最后需要重build。 有没有办法在Mac上build立这个图像,然后把它拉到我的树莓派?

模拟一个完整的替代架构通常非常缓慢。 QEMU可以让你在Linux上做到这一点,并可以集成到Docker容器中。

对于构build,您可以使用QEMU用户仿真比完整仿真快得多。 这使您的硬件可以直接执行ARM二进制文件,并用于简化交叉编译和交叉debugging。

首先获得VirtualBox并获得stream浪汉并安装。 (或者使用Docker工具箱中的 docker-machine

设置您的VM

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

现在你在你的Debian Linux虚拟机上,设置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来移动图片。 您也可以使用集线器或设置registry来使用push / pull

Docker工具箱还可以让你通过Mac上的VirtualBox虚拟机轻松运行Docker,但是遇到了更多的麻烦(当你有stream浪的设置时)。

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

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

我的CI服务器运行上述的组合,以不断构build带有预先加载的armh docker映像的OS映像。 然后, device-init负责将docker exports加载为docker镜像。 缺点是device-init在第一次启动后可能需要几个小时来预加载docker镜像。