2015-11-28 6 views
6

Dies könnte generischer sein und ein Bild für Architektur B mit einer Maschinenarchitektur A erstellen. Ich möchte derzeit ein Bild mit vielen Python-Abhängigkeiten erstellen. Die nehmen raspberry-pi, sind aber schneller auf dem Mac. Wenn ich am Ende einen Fehler bekomme, muss ich ihn neu erstellen. Gibt es eine Möglichkeit, dieses Image auf Mac zu erstellen und es dann auf meinen Raspberry Pi zu ziehen?Docker - Erstellen rpi Bild auf Mac

Antwort

8

Die Emulation einer vollständigen alternativen Architektur ist im Allgemeinen sehr langsam. QEMU ermöglicht Ihnen, dies unter Linux zu tun und kann in einen Docker-Container integriert werden.

Zum Erstellen können Sie QEMU User Emulation verwenden, die viel schneller ist als vollständige Emulation. Dadurch kann Ihre Hardware ARM-Binärdateien direkt ausführen und Cross-Compilierung und Cross-Debugging wird erleichtert.

Zuerst get VirtualBox und get Vagrant und installieren. (Oder verwenden docker-machine vom Docker Toolbox)

Richten Sie Ihre VM

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

Jetzt sind Sie auf Ihrem Debian Linux VM, Setup der Docker Host

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

Run a raspbian Umgebung

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

Und tun Sie, was Sie brauchen.

Dann können Sie docker export und docker import Bilder verschieben. Sie können auch the hub oder setup a registry verwenden push/pull

Die Docker Toolbox werden Sie auch verwenden lassen leicht Docker über eine VirtualBox VM auf dem Mac laufen, aber ich habe in mehr Probleme laufen, als es wert gewesen ist (wenn Sie vagrant Setup).

+0

Einfache und nette Lösung und es funktioniert ... Ich mag es danke. – Clempat

+0

entdecke ich auch https://www.scaleway.com/. Ich konnte mich nicht registrieren. keine Einladung, aber interessant für diesen Zweck zu verwenden ... – Clempat

0

Sie können den Distri Builder von RPI anpassen und an Ihre Bedürfnisse anpassen: https://github.com/RPi-Distro/pi-gen Er verwendet qemu-debootstrap auf Docker, ähnlich wie Matts Antwort.

Wenn Sie auch Docker Images für die Arm-Architektur erstellen möchten, wird qemu-debootstrap nicht helfen. In diesem Fall können Sie Docker-Builds direkt auf einem ARM-Server ausführen, wie sie von Scaleway angeboten werden.

Mein CI-Server führt eine Kombination der oben genannten, um kontinuierlich ein OS-Image mit vorinstallierten Armh Docker Images zu erstellen. Dann erledigt device-init das Laden von Docker-Exporten als Docker-Images. Der Nachteil ist, dass Device-Init nach dem ersten Booten Stunden dauern kann, um die Docker-Images vorzuladen.