Indholdsfortegnelse:
- Trin 1: Hvorfor Docker?
- Trin 2: Docker Overhead
- Trin 3: Installer Docker
- Trin 4: Byg Docker Image
- Trin 5: Udvikling Byg hastighed mod billedstørrelse
- Trin 6: Multi Arch -billeder
- Trin 7: Glad RPi
Video: Byg Docker -billede til Raspberry Pi: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Denne instruktion viser, hvordan man bygger et Docker -billede til Raspberry Pi.
Trin 1: Hvorfor Docker?
Du kan bruge Raspberry Pi (RPi) til at gøre mange ting, lille webserver, AI -assistent, Robotics … etc.
Mange projekter du vil prøve, men smertepunkterne er:
Tid til at bygge
RPi er ikke opsat på processorkraft, og SD/USB -drevet begrænsede IO -hastigheden. Brug apt install all afhængighedspakke kræver en time, og opbygning af kilden kræver flere timer. Især for AI -relaterede projekter, tid til at vente mere end tid til at prøve.
Versionskonflikt
Alle prøver mange projekter i en RPi. Når du har prøvet et projekt og gerne vil skifte til et andet, vil du muligvis finde en build -fejl, der skyldes konflikt med afhængighedsbiblioteker med tidligere projekt. Nogle biblioteker stopper med at udvikle for få år siden og er afhængige af nogle meget gamle biblioteker. I modsætning hertil var et aktivt projekt afhængigt af de nyeste biblioteker. Begge projekter kan ikke eksistere i samme SD/USB-drev ?.
Sikkerhedskopiering af billeder
Da nogle projekter ikke kan eksistere samtidigt, skal du blot købe mere SD/USB-drev for at holde hvert projektbillede afhængigt er en måde. Hvis penge ikke er begrænset ?. Men det øger vanskelighederne ved fil-/billedstyring, nogle gange kræver det, at du bytter SD/USB og starter mange gange for at finde ud af, hvad du vil.
Svært at dele
Når du byggede dit projekt og gerne vil dele kilden med venner, kan dine venner få build mislykket feed tilbage. Distribution/biblioteker version for gammel eller for ny, bygger parametre og nogle tricks. Du skal bruge tiden på at løse andre byggeopgaver, men ikke støtte selve projektet.
Ovenstående smertepunkter er min erfaring i disse få år. Docker kan hjælpe det meste.
Docker starter build fra at vælge et forudbygget overordnet billede. F.eks. debian: jessie-slim start fra en gammel stabil Debian letvægtsfordeling; node: 10-buster-slank start fra Debians lette vægtfordeling med Node.js 10 installeret. Det forudbyggede billede kan spare meget tid til at blinke billede, få opdatering og installere afhængige biblioteker. Hvert projekt kan starte fra forskellige OS -versioner, runtime -versioner og biblioteksversioner. Når du er færdig med at udvikle dit eget projekt, kan du skubbe Docker -billedet til docker -hub og dele med alle. Du kan gemme alle projektdata på samme SD/USB (data bør rutinemæssig sikkerhedskopiering til andre medier). For at gemme lokal lagerplads kan du endda rydde op i Docker -billedet, når det ikke bruges, når som helst du kan trække fra Docker -hub igen.
Trin 2: Docker Overhead
Docker tilføjede et virtualiseringslag, overhead er en bekymring. Jeg har ikke testet for meget om Docker -omkostningerne. De fleste googlede resultater hævder meget lave omkostninger, og jeg fandt dette dokument om noget relateret forskning:
domino.research.ibm.com/library/cyberdig.n…
Trin 3: Installer Docker
Bare kør:
curl -sSL https://get.docker.com | sh
Ref.:
www.raspberrypi.org/blog/docker-comes-to-…
docs.docker.com/get-started/
Trin 4: Byg Docker Image
Find den officielle vejledning om bygning af dockerbillede:
docs.docker.com/get-started/part2/
Jeg har 2 projekter, der bruger Docker, du finder muligvis Dockerfilen som en reference:
BanateCAD kræver Lua -runtime og nogle yderligere Lua -biblioteker. Kun Lua 5.1 kan kompatibelt med alle nødvendige Lua -biblioteker, men det er et produkt fra 2006. Den seneste Debian -distribution, der kan bygge Lua 5.1 -succes, er Jessie (versionen før den nuværende Debian gamle stald). Så jeg byggede et Lua 5.1 miljø Docker Image for at køre det
github.com/moononournation/BanateCAD/tree/…
OpenCV er et aktivt udviklende projekt, kildekoden afhænger af de nyeste biblioteker og kompilator. Så det er meget stor chance for at bygge mislykkedes, biblioteks metode signatur, kompilerversion, afhængighedskonflikt … Jeg vil gerne bruge opencv4nodejs til at lave en simpel app og kræver ikke de nyeste funktioner. Så da jeg fandt en måde at opbygge opencv4nodejs succes, vil jeg gerne fryse det til et Docker Image og lave min egentlige applikationskodning
github.com/moononournation/face-aware-phot…
Trin 5: Udvikling Byg hastighed mod billedstørrelse
Du har muligvis fundet, at mit ansigtsbevidste-foto-osd-projekt har 2 versioner af Dockfile:
github.com/moononournation/face-aware-phot…
Mens udviklingen er, kan jeg godt lide at dele RUN -kommandoen så lille som muligt og arrangere højst sandsynligt at ændre RUN -kommandoen til sidste trin. Så for hver build til udviklingsændring kan jeg udnytte tidligere bygget lag så meget som muligt og spare meget byggehastighed.
I modsætning hertil vil jeg kombinere alle RUN -kommandoer i en før frigivelse. mindre lag kan reducere Docker Image -størrelsen meget. Mit ansigtsbevidste-foto-osd-projekt som eksempel kan reducere mere end 100 MB i størrelse.
Trin 6: Multi Arch -billeder
Som nævnt før er RPi ikke opsat på processorkraft. Brug RPi build Docker -billede er muligvis ikke et godt valg, især når din eneste RPi kører andre projekter.
Brug en x86 -computer kan også hjælpe dig med at bygge Docker -billedet. Find flere detaljer her:
www.docker.com/blog/multi-arch-images/
simple 2 kommandoer kan bygge x86 og ARM Docker Image parallelt:
docker buildx create --use
docker buildx build-platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab: 1.0.1 --push.
Multi Arch kan bygge multi -platform image med samme Docker image tag, så dit projekt kan køre i forskellige maskiner problemfrit. f.eks.
docker run -it moononournation/debian-imagemagick-lua-meshlab: 1.0.1
Uanset om du kører ovenstående kommando på RPi eller din x86 -computer, kan du få et Lua -runtime -miljø.
Trin 7: Glad RPi
Du kan nu lettere udvikle og dele dit RPi -projekt!
Anbefalede:
Byg en bærbar bevægelsessporer (BLE fra Arduino til en brugerdefineret Android Studio App): 4 trin
Byg en bærbar bevægelsessporer (BLE fra Arduino til en brugerdefineret Android Studio App): Bluetooth Low Energy (BLE) er en form for lavstrøm Bluetooth -kommunikation. Bærbare enheder, ligesom de smarte beklædningsgenstande, jeg hjælper med at designe på Predictive Wear, skal begrænse strømforbruget, hvor det er muligt, for at forlænge batteriets levetid og ofte bruge BLE
Byg en $ 15 fjernbetjent ESP8266 Robot Butler / bil / tank til Ios og Android: 4 trin
Byg en fjernbetjent ESP8266 Robot Butler / bil / tank til $ 15 til Ios og Android på $ 15: Hader du at gå til køkkenet for at få en snack? Eller for at få en ny drink? Alt dette kan løses med denne enkle $ 15 fjernbetjente butler. Inden vi går videre, kører jeg et Kickstarter -projekt lige nu til en stemmestyret RGB -ledstrip
Byg denne 5Hz til 400KHz LED Sweep Signal Generator fra kits: 8 trin
Byg denne 5Hz til 400KHz LED Sweep Signal Generator fra kits: Byg denne nemme fejesignalgenerator fra let tilgængelige kits. Hvis du havde kigget på min sidste instruerbare (Make Professional Looking Front Panels), havde jeg muligvis undladt, hvad jeg arbejdede på på det tidspunkt, som var en signalgenerator. Jeg ville have en
Byg Kodi / OSMC infrarød modtager og nulstil hat til Raspberry Pi: 5 trin (med billeder)
Byg Kodi / OSMC Infrarød modtager og Nulstil hat til Raspberry Pi: Byg en Kodi / OSMC IR -modtager og Nulstil hat til Raspberry Pi 3 Fra et værelse vil jeg gerne: Styr Kodi / OSMC, der kører på en Raspberry Pi med en fjernbetjening Se om Raspberry Pi er tændtOgså vil jeg gerne have at min familie
Byg en Raspberry Pi -pc til mindre end $ 140: 17 trin
Byg en Raspberry Pi-pc til mindre end $ 140: opdatering fra marts 2017: Opret en Raspberry Pi-baseret pc med acceptabel ydelse til en lav pris til brug i gymnasieelever. De fleste kender Windows eller MAC-operativsystemer. Linux er et andet operativsystem. Et mål med denne instruerbare