这可能更通用,并且正在为具有机器架构A的架构B构建图像。我当前想要创建具有许多Python依赖性的图像。这需要花时间在树莓派上,但在Mac上更快。当我在最后得到错误时需要重建。有没有办法在Mac上构建这个图像,然后将它拉到我的树莓派上?
答案 0 :(得分:9)
模拟完整的备用架构通常非常慢。 QEMU允许您在Linux上执行此操作,并且可以集成到Docker容器中。
对于构建,您可以使用QEMU User Emulation,这比完全模拟快得多。这允许您的硬件直接执行ARM二进制文件,并用于简化交叉编译和交叉调试。
首先get VirtualBox和get 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 export
和docker import
移动图片。您还可以使用the hub或setup 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镜像。