2015-11-28 52 views
6

这可能会更通用,并且会为机器体系结构A构建体系结构B的映像。我当前想要创建一个具有很多Python依赖关系的映像。在树莓派上花费时间,但在Mac上速度更快。当我最终得到一个错误需要重建。有没有办法在Mac上构建这个图像,然后把它拉到我的覆盆子pi?Docker - 在Mac上构建rpi图像

回答

8

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

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

第一个get VirtualBoxget Vagrant并安装。 (或者使用docker-machineDocker Toolbox

设置你的虚拟机

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

现在你对你的Debian Linux的虚拟机,设置泊坞窗主机

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也将让你轻松通过VirtualBox的虚拟机在Mac上运行的码头工人,但我碰到更多的麻烦比它是值得(当你有游民设置)。

+0

简单而好的解决方案,它的工作原理...我喜欢它,谢谢。 – Clempat

+0

我也发现https://www.scaleway.com/。我无法注册。没有邀请,但看起来很有趣用于此目的... – Clempat

0

您可以派生RPI的发行建设者和自定义您的需求:https://github.com/RPi-Distro/pi-gen 它使用的码头工人的qemu-debootstrap的,类似于马特的答案。

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

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

相关问题