Inhaltsverzeichnis:
- Schritt 1: Warum Docker?
- Schritt 2: Docker-Overhead
- Schritt 3: Docker installieren
- Schritt 4: Docker-Image erstellen
- Schritt 5: Entwicklung Build-Geschwindigkeit vs. Bildgröße
- Schritt 6: Multi-Bogen-Bilder
- Schritt 7: Glückliches RPi
Video: Docker-Image für Raspberry Pi erstellen - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Diese Anleitungen zeigen, wie Sie ein Docker-Image für Raspberry Pi erstellen.
Schritt 1: Warum Docker?
Sie können Raspberry Pi (RPi) verwenden, um viele Dinge zu tun, winzige Webserver, KI-Assistenten, Robotik usw.
Viele Projekte, die Sie ausprobieren möchten, aber die Schwachstellen sind:
Zeit zum Bauen
RPi ist nicht an Rechenleistung interessiert, und das SD / USB-Laufwerk begrenzt die IO-Geschwindigkeit. Verwenden Sie apt install alle Abhängigkeitspakete benötigen eine Stunde und das Erstellen der Quelle erfordert mehr Stunden. Vor allem bei KI-bezogenen Projekten ist es Zeit, mehr zu warten als es zu versuchen.
Versionskonflikt
Jeder probiert viele Projekte in einem RPi aus. Wenn Sie ein Projekt ausprobiert haben und zu einem anderen wechseln möchten, stellen Sie möglicherweise fest, dass einige Builds fehlschlagen, die durch einen Versionskonflikt der Abhängigkeitsbibliotheken mit dem vorherigen Projekt verursacht werden. Einige Bibliotheken hören vor einigen Jahren auf, sich zu entwickeln und sind von einigen sehr alten Bibliotheken abhängig. Im Gegensatz dazu war das aktive Projekt von den neuesten Bibliotheken abhängig. Beide Projekte können nicht auf demselben SD/USB-Laufwerk gleichzeitig existieren?.
Image-Backup
Da einige Projekte nicht nebeneinander existieren können, kaufen Sie einfach mehr SD/USB-Laufwerke, um jedes Projektbild abhängig zu machen. Wenn das Geld nicht begrenzt ist?. Aber es erhöht die Schwierigkeiten der Datei-/Image-Verwaltung, manchmal müssen Sie SD/USB austauschen und viele Male booten, um herauszufinden, was Sie wollen.
Schwer zu teilen
Wenn Sie Ihr Projekt erstellt haben und die Quelle an Freunde weitergeben möchten, erhalten Ihre Freunde möglicherweise das Feedback zum fehlgeschlagenen Build. Distributions-/Bibliotheksversion zu alt oder zu neu, Gebäudeparameter und einige Tricks. Sie müssen die Zeit aufwenden, um andere Build-Probleme zu lösen, aber nicht das Projekt selbst zu unterstützen.
Die oben genannten Schmerzpunkte sind meine Erfahrung in diesen paar Jahren. Docker kann das meiste davon helfen.
Docker startet den Build durch die Auswahl eines vorgefertigten übergeordneten Images. Z. B. debian:jessie-slim startet von einer alten stabilen Debian-Lightweight-Distribution; node:10-buster-slim Start von der Debian-Leichtgewichtsverteilung mit installiertem Node.js 10. Das vorgefertigte Image kann viel Zeit sparen, um Image zu flashen, Updates zu erhalten und abhängige Bibliotheken zu installieren. Jedes Projekt kann mit unterschiedlichen OS-Versionen, Runtime-Versionen und Bibliotheken-Versionen gestartet werden. Wenn Sie mit der Entwicklung Ihres eigenen Projekts fertig sind, können Sie das Docker-Image an Docker Hub übertragen und für alle freigeben. Sie können alle Projektdaten auf derselben SD/USB speichern (Daten sollten routinemäßig auf andere Medien gesichert werden). Um lokalen Speicher zu sparen, können Sie das Docker-Image sogar bereinigen, wenn es nicht verwendet wird, und jederzeit wieder aus dem Docker-Hub ziehen.
Schritt 2: Docker-Overhead
Docker hat eine Virtualisierungsschicht hinzugefügt, der Overhead ist ein Problem. Ich habe nicht zu viel über den Docker-Overhead getestet. Die meisten Google-Ergebnisse beanspruchen einen sehr geringen Overhead und ich habe dieses Dokument über einige verwandte Forschungen gefunden:
domino.research.ibm.com/library/cyberdig.n…
Schritt 3: Docker installieren
Einfach ausführen:
curl -sSL https://get.docker.com | NS
Ref.:
www.raspberrypi.org/blog/docker-comes-to-…
docs.docker.com/get-started/
Schritt 4: Docker-Image erstellen
Hier finden Sie den offiziellen Leitfaden zum Bau von Docker-Images:
docs.docker.com/get-started/part2/
Ich habe 2 Projekte, die Docker verwenden, Sie finden das Dockerfile möglicherweise als Referenz:
BanateCAD erfordert Lua-Laufzeit und einige zusätzliche Lua-Bibliotheken. Nur Lua 5.1 kann mit allen erforderlichen Lua-Bibliotheken kompatibel sein, aber es ist das Produkt von 2006. Die neueste Debian-Distribution, die den Erfolg von Lua 5.1 aufbauen kann, ist Jessie (die Version vor dem aktuellen Debian Old Stable). Also habe ich ein Docker-Image für die Lua 5.1-Umgebung erstellt, um es auszuführen
github.com/moononournation/BanateCAD/tree/…
OpenCV ist ein sich aktiv entwickelndes Projekt, der Quellcode hängt von den neuesten Bibliotheken und Compilern ab. Daher ist es sehr wahrscheinlich, dass die Erstellung fehlgeschlagen ist, Bibliotheksmethodensignatur, Compilerversion, Abhängigkeitskonflikt… Ich möchte opencv4nodejs verwenden, um eine einfache App zu erstellen und die neuesten Funktionen nicht zu benötigen. Als ich also einen Weg gefunden habe, den Erfolg von opencv4nodejs aufzubauen, möchte ich es in ein Docker-Image einfrieren und meine eigentliche Anwendungscodierung durchführen
github.com/moononournation/face-aware-phot…
Schritt 5: Entwicklung Build-Geschwindigkeit vs. Bildgröße
Sie können feststellen, dass mein gesichtsbewusstes Foto-OSD-Projekt 2 Versionen von Dockfile hat:
github.com/moononournation/face-aware-phot…
Während der Entwicklung möchte ich den RUN-Befehl so klein wie möglich aufteilen und am ehesten den RUN-Befehl zum letzten Schritt ändern. So kann ich bei jedem Build für Entwicklungsänderungen so viel wie möglich auf den vorherigen Build-Layer zurückgreifen und viel Build-Geschwindigkeit sparen.
Im Gegensatz dazu werde ich vor der Veröffentlichung alle RUN-Befehle in einem zusammenfassen. Eine geringere Ebene kann die Docker-Image-Größe erheblich reduzieren. Mein gesichtsbewusstes Foto-OSD-Projekt als Beispiel kann mehr als 100 MB verkleinern.
Schritt 6: Multi-Bogen-Bilder
Wie bereits erwähnt, ist RPi nicht an Rechenleistung interessiert. Verwenden Sie das RPi-Build Docker-Image möglicherweise keine gute Wahl, insbesondere wenn Ihr einziges RPi andere Projekte ausführt.
Die Verwendung eines x86-Computers kann Ihnen auch beim Erstellen des Docker-Images helfen. Weitere Informationen finden Sie hier:
www.docker.com/blog/multi-arch-images/
einfache 2-Befehle können x86- und ARM-Docker-Image parallel erstellen:
docker buildx create --use
docker buildx build --platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab:1.0.1 --push.
Multi Arch kann Multi-Plattform-Images mit demselben Docker-Image-Tag erstellen, sodass Ihr Projekt nahtlos auf verschiedenen Computern ausgeführt werden kann. z. B.
docker run -it moononournation/debian-imagemagick-lua-meshlab:1.0.1
Unabhängig davon, ob Sie den obigen Befehl auf RPi oder Ihrem x86-Computer ausführen, können Sie eine Lua-Laufzeitumgebung erhalten.
Schritt 7: Glückliches RPi
Sie können Ihr RPi-Projekt jetzt einfacher entwickeln und teilen!
Empfohlen:
So erstellen Sie eine UML für Java in Microsoft Visio: 4 Schritte
So erstellen Sie eine UML für Java in Microsoft Visio: Das Erstellen einer UML kann zunächst etwas einschüchternd wirken. Es gibt viele komplizierte Notationsstile, und es kann sich anfühlen, als gäbe es keine guten Ressourcen, um eine lesbare und genaue UML zu formatieren. Microsoft Visio macht jedoch das Erstellen einer UML-Qu
So erstellen Sie ein fantastisches Profilbild für Ihr Chromebook – wikiHow
So erstellen Sie ein fantastisches Profilbild für Ihr Chromebook: Hallo zusammen! Das ist Gamer Bro Cinema, und heute zeigen wir dir, wie du ein tolles YouTube-Profilbild für deinen YouTube-Kanal erstellen kannst! Diese Art von Profilbild kann nur auf einem Chromebook erstellt werden. Lass uns anfangen
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger – wikiHow
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger: EinführungDie folgenden Anweisungen bieten eine Schritt-für-Schritt-Anleitung zum Erstellen einer Webseite mit Klammern. Brackets ist ein Quellcode-Editor mit Schwerpunkt auf Webentwicklung. Es wurde von Adobe Systems erstellt und ist eine kostenlose Open-Source-Software, die
So erstellen Sie ein Gmail-Konto (Raigyns Tutorial für East): 8 Schritte
So erstellen Sie ein Gmail-Konto (Raigyns Tutorial für East): In diesem Tutorial zeige ich Ihnen, wie Sie ein Gmail-Konto erstellen
Benutzerdefinierte Aktionen für Google Assistant erstellen: 12 Schritte
Erstellen Sie benutzerdefinierte Aktionen für Google Assistant: Angesichts des Potenzials von Google Assistant, wie er in Google I/O 18 sowie Volvo Cars in ihrem Infotainment-System präsentiert wurde, konnte ich nicht widerstehen, es auszuprobieren. Ich habe eines meiner älteren Projekte, VasttraPi, wiederverwendet und mit Google Assistant verbunden