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
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).
È 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.
Soluzione semplice e piacevole e funziona ... Mi piace grazie. – Clempat
Scopro anche https://www.scaleway.com/. Non potevo registrarmi nessun invito ma sembra interessante da usare per questo scopo ... – Clempat