INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Hierdie instruksies wys hoe u 'n Docker -beeld vir Raspberry Pi kan bou.
Stap 1: Waarom Docker?
U kan Raspberry Pi (RPi) gebruik om baie dinge te doen, klein webbediener, AI -assistent, robotika …
Baie projekte wat u wil probeer, maar die pynpunte is:
Tyd om te bou
RPi is nie lus vir verwerkingskrag nie, en die SD/USB -skyf het die IO -snelheid beperk. Gebruik 'n geskikte installeer -pakket vir alle afhanklikheid benodig 'n uur en die bou van die bron verg meer ure. Veral vir AI -verwante projekte, moet u meer as tyd wag om te probeer.
Weergawekonflik
Almal probeer baie projekte in een RPi. As u 'n projek probeer het en na 'n ander een wil oorskakel, is daar moontlik 'n boufout wat veroorsaak word deur die weergawe van afhanklikheidsbiblioteke met die vorige projek. Sommige biblioteke het 'n paar jaar gelede opgehou ontwikkel en is afhanklik van 'n paar ou biblioteke. Daarteenoor was die aktiewe projek afhanklik van die nuutste biblioteke. Beide projekte kan nie op dieselfde SD/USB-skyf bestaan nie?
Beeldrugsteun
Aangesien sommige projekte nie saam kan bestaan nie, koop eenvoudig meer SD/USB-skyf om elke projekbeeld afhanklik te hou. As geld nie beperk is nie ?. Maar dit vergroot die probleme met lêer-/beeldbestuur, soms moet u SD/USB ruil en baie keer opstart om uit te vind wat u wil hê.
Moeilik om te deel
As u u projek opgestel het en die bron met vriende wil deel, kan u vriende die terugvoer van die bou misluk. Verspreiding/biblioteke weergawe te oud of te nuut, bou parameters en 'n paar truuks. U moet die tyd gebruik om ander probleme op te los, maar om nie die projek self te ondersteun nie.
Bogenoemde pynpunte is my ervaring in hierdie paar jaar. Docker kan die meeste daarvan help.
Docker begin bou deur 'n voorafgeboude ouerbeeld te kies. Bv. debian: jessie-slim begin van 'n ou stabiele Debian liggewigverdeling; node: 10-buster-slim begin vanaf die ligte gewigverdeling van Debian met Node.js 10 geïnstalleer. Die voorafgeboude beeld kan baie tyd bespaar om die beeld te flits, opdaterings te kry en afhanklike biblioteke te installeer. Elke projek kan begin met verskillende bedryfstelselweergawes, runtime -weergawes en biblioteke. As u klaar is met die ontwikkeling van u eie projek, kan u die Docker -beeld na die docker -hub stoot en met almal deel. U kan alle projekdata op dieselfde SD/USB hou (data moet gereeld rugsteun na ander media). Om die plaaslike berging te stoor, kan u selfs die Docker -beeld skoonmaak as u dit nie gebruik nie, en u kan dit altyd weer uit die Docker -hub trek.
Stap 2: Docker -bokoste
Docker het een virtualiseringslaag bygevoeg, dit is 'n bron van kommer. Ek het nie te veel getoets oor die Docker -bokoste nie. Die meeste gegoogle resultate beweer 'n baie lae koste en ek het hierdie dokument gevind oor 'n paar verwante navorsing:
domino.research.ibm.com/library/cyberdig.n…
Stap 3: Installeer Docker
Hardloop eenvoudig:
curl -sSL https://get.docker.com | sh
Verw.:
www.raspberrypi.org/blog/docker-comes-to-…
docs.docker.com/get-started/
Stap 4: Bou Docker -beeld
Vind die amptelike gids vir die bou van docker -beeld:
docs.docker.com/get-started/part2/
Ek het 2 projekte wat Docker gebruik, u kan die Dockerfile as 'n verwysing vind:
BanateCAD benodig Lua -runtime en 'n paar Lua -biblioteke. Slegs Lua 5.1 kan met alle vereiste Lua -biblioteke versoenbaar wees, maar dit is die produk van 2006. Die nuutste Debian -verspreiding wat Lua 5.1 -sukses kan bou, is Jessie (die weergawe voor die huidige Debian -ou stal). Ek het dus 'n Lua 5.1 -omgewing Docker Image gebou om dit te bestuur
github.com/moononournation/BanateCAD/tree/…
OpenCV is 'n aktief ontwikkelende projek; die bronkode hang af van die nuutste biblioteke en samesteller. Dit is dus 'n baie groot kans om 'n mislukte handtekening van biblioteke te bou, samestellerweergawe, afhanklikheidskonflik … Ek wil opencv4nodejs gebruik om 'n eenvoudige app te maak en het nie die nuutste funksies nodig nie. Dus, toe ek 'n manier vind om die sukses van opencv4nodejs te bou, wil ek dit in 'n Docker -beeld vries en my werklike programkodering doen
github.com/moononournation/face-aware-phot…
Stap 5: Ontwikkeling Bou spoed teenoor beeldgrootte
U het moontlik gevind dat my gesigbewuste foto-osd-projek 2 weergawes van Dockfile het:
github.com/moononournation/face-aware-phot…
Terwyl ek ontwikkel is, hou ek van die gesplete RUN -opdrag so klein as moontlik, en ek stel die RUN -opdrag waarskynlik in die laaste stap. Dus, vir elke konstruksie vir ontwikkelingsverandering, kan ek die vorige gebou laag soveel as moontlik gebruik en baie bou spoed bespaar.
Daarteenoor kombineer ek alle RUN -opdragte in een voor vrylating. 'n kleiner laag kan die grootte van die Docker -beeld baie verminder. My gesig-bewuste-foto-osd-projek kan as voorbeeld meer as 100 MB verminder.
Stap 6: Multi Arch -beelde
Soos voorheen genoem, is RPi nie lus vir verwerkingskrag nie. Die gebruik van RPi build Docker -beeld is miskien nie 'n goeie keuse nie, veral as u enigste RPi ander projekte uitvoer.
Gebruik 'n x86 -rekenaar en kan u ook help om die Docker -beeld te bou; vind meer besonderhede hier:
www.docker.com/blog/multi-arch-images/
eenvoudige 2 opdragte kan x86 en ARM Docker Image parallel bou:
docker buildx skep --gebruik
docker buildx build-platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab: 1.0.1 --push.
Multi Arch kan 'n multi -platformbeeld bou met dieselfde Docker -afbeeldingsetiket, sodat u projek naatloos in verskillende masjiene kan werk. bv.
docker run -it moononournation/debian-imagemagick-lua-meshlab: 1.0.1
Maak nie saak of u die bogenoemde opdrag op RPi of u x86 -rekenaar uitvoer nie, u kan 'n Lua -runtime -omgewing kry.
Stap 7: Gelukkige RPi
U kan nou u RPi -projek makliker ontwikkel en deel!