2015-11-28 19 views
6

Questo potrebbe essere più generico e costruire un'immagine per architettura B con un'architettura di macchina A. Attualmente voglio creare un'immagine con molte dipendenze Python. Che richiede tempo su raspberry-pi ma è più veloce su Mac. Quando ricevo un errore alla fine, è necessario ricostruire. C'è un modo per costruire questa immagine su Mac e poi tirarla sul mio raspberry pi?Docker - Crea immagine rpi su Mac

risposta

8

L'emulazione di un'architettura alternativa completa è generalmente molto lenta. QEMU è ciò che ti permette di farlo su Linux e può essere integrato in un contenitore Docker.

Per la costruzione, è possibile utilizzare QEMU User Emulation che è molto più veloce dell'emulazione completa. Ciò consente all'hardware di eseguire direttamente binari ARM e viene utilizzato per semplificare la compilazione incrociata e il cross-debug.

Primo get VirtualBox e get Vagrant e installazione. (Oppure utilizzare docker-machine dalla Docker Toolbox) Setup

vostro VM

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

Ora siete sulla Debian Linux VM, messa a punto l'host Docker

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

Eseguire un ambiente raspbian

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

E fai quello che ti serve.

Quindi è possibile docker export e docker import per spostare le immagini intorno. È inoltre possibile utilizzare the hub o setup a registry utilizzare push/pull

Il Docker Toolbox vi permetterà anche di eseguire facilmente Docker tramite una macchina virtuale VirtualBox su Mac, ma ho incontrato più problemi di quanto non lo è valsa la pena (quando si dispone di installazione vagabondo).

+0

Soluzione semplice e piacevole e funziona ... Mi piace grazie. – Clempat

+0

Scopro anche https://www.scaleway.com/. Non potevo registrarmi nessun invito ma sembra interessante da usare per questo scopo ... – Clempat

0

È possibile eseguire il fork del generatore di distro di RPI e personalizzare in base alle proprie esigenze: https://github.com/RPi-Distro/pi-gen Utilizza qemu-debootstrap su Docker, simile alla risposta di Matt.

Se si prevede di costruire anche immagini Docker per architettura braccio, qemu-debootstrap non sarà di aiuto. In questo caso è possibile eseguire build Docker direttamente su un server ARM, come quelli offerti da Scaleway.

Il mio server CI esegue una combinazione di quanto sopra, per creare continuamente un'immagine del sistema operativo con immagini caricatore armh precaricate. Quindi, device-init si occupa di caricare le esportazioni della finestra mobile come immagini di finestra mobile. Lo svantaggio è che device-init può richiedere ore per precaricare le immagini della finestra mobile, dopo il primo avvio.