Inhoudsopgave:
- Stap 1: Waarom Docker?
- Stap 2: Docker overhead
- Stap 3: Installeer Docker
- Stap 4: Docker-afbeelding bouwen
- Stap 5: Ontwikkeling Bouwsnelheid versus afbeeldingsgrootte
- Stap 6: afbeeldingen met meerdere bogen
- Stap 7: Gelukkige RPi
Video: Docker-afbeelding bouwen voor Raspberry Pi - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Deze instructables laten zien hoe je een Docker-afbeelding voor Raspberry Pi kunt bouwen.
Stap 1: Waarom Docker?
Je kunt Raspberry Pi (RPi) voor veel dingen gebruiken, kleine webserver, AI-assistent, robotica … enz.
Veel projecten die je wilt proberen, maar de pijnpunten zijn:
Tijd om te bouwen
RPi is niet dol op verwerkingskracht en de SD / USB-drive beperkte de IO-snelheid. Gebruik apt install all dependency package vereist een uur en het bouwen van de source vereist meer uren. Vooral voor AI-gerelateerde projecten is het meer tijd om te wachten dan om het te proberen.
Versieconflict
Iedereen probeert veel projecten in één RPi. Wanneer u een project hebt geprobeerd en naar een ander project wilt overschakelen, kan het zijn dat een build mislukt, veroorzaakt door een conflict tussen de versie van de afhankelijkheidsbibliotheken en het vorige project. Sommige bibliotheken zijn enkele jaren geleden gestopt met ontwikkelen en zijn afhankelijk van enkele zeer oude bibliotheken. Het actieve project was daarentegen afhankelijk van de nieuwste bibliotheken. Beide projecten kunnen niet naast elkaar bestaan op dezelfde SD/USB-drive?.
Afbeeldingsback-up
Aangezien sommige projecten niet naast elkaar kunnen bestaan, is het een manier om gewoon meer SD/USB-drives te kopen om elk projectbeeld afhankelijk te houden. Als geld niet beperkt is?. Maar het vergroot de moeilijkheden van bestands-/afbeeldingsbeheer, soms moet je SD/USB verwisselen en vaak opstarten om erachter te komen wat je wilt.
Moeilijk te delen
Wanneer je je project hebt gebouwd en de bron met vrienden wilt delen, kunnen je vrienden feedback krijgen over de mislukte build. Distributie/bibliotheken versie te oud of te nieuw, parameters bouwen en wat trucjes. U moet de tijd gebruiken om problemen van anderen op te lossen, maar het project zelf niet te ondersteunen.
Bovenstaande pijnpunten zijn mijn ervaring in deze paar jaar. Docker kan het meeste helpen.
Docker start de build door een vooraf gebouwde bovenliggende afbeelding te selecteren. bijv. debian:jessie-slim start van een oude stabiele lichtgewicht distributie van Debian; node:10-buster-slim start vanuit Debian lichtgewicht distributie met Node.js 10 geïnstalleerd. De vooraf gebouwde afbeelding kan veel tijd besparen om de afbeelding te flashen, updates te krijgen en afhankelijke bibliotheken te installeren. Elk project kan starten vanuit een andere OS-versie, runtime-versie en bibliothekenversie. Wanneer u klaar bent met het ontwikkelen van uw eigen project, kunt u de Docker-afbeelding naar de docker-hub pushen en met iedereen delen. U kunt alle projectgegevens op dezelfde SD/USB bewaren (gegevens moeten routinematig worden geback-upt naar andere media). Om lokale opslag op te slaan, kunt u zelfs de Docker-image opschonen wanneer u deze niet gebruikt, wanneer u deze opnieuw uit de Docker-hub kunt halen.
Stap 2: Docker overhead
Docker heeft één virtualisatielaag toegevoegd, overhead is een punt van zorg. Ik heb niet te veel getest over de Docker-overhead. De meeste Google-resultaten claimen een zeer lage overhead en ik vond dit document over gerelateerd onderzoek:
domino.research.ibm.com/library/cyberdig.n…
Stap 3: Installeer Docker
Gewoon uitvoeren:
curl -sSL https://get.docker.com | NS
ref.:
www.raspberrypi.org/blog/docker-comes-to-…
docs.docker.com/get-started/
Stap 4: Docker-afbeelding bouwen
Vind de officiële gids over het bouwen van docker-afbeeldingen:
docs.docker.com/get-started/part2/
Ik heb 2 projecten die Docker gebruiken, je kunt de Dockerfile als referentie vinden:
BanateCAD vereist Lua-runtime en enkele extra Lua-bibliotheken. Alleen Lua 5.1 is compatibel met alle vereiste Lua-bibliotheken, maar het is het product van 2006. De nieuwste Debian-distributie die Lua 5.1-succes kan bouwen, is Jessie (de versie vóór de huidige oude stal van Debian). Dus bouwde ik een Lua 5.1-omgeving Docker Image om het uit te voeren
github.com/moononournation/BanateCAD/tree/…
OpenCV is een actief ontwikkelend project, de broncode is afhankelijk van de nieuwste bibliotheken en compiler. Dus de kans is groot dat het bouwen is mislukt, de handtekening van de bibliothekenmethode, de compilerversie, het afhankelijkheidsconflict … Ik zou graag opencv4nodejs willen gebruiken om een eenvoudige app te maken en ik heb niet de nieuwste functies nodig. Dus toen ik een manier vond om het succes van opencv4nodejs op te bouwen, zou ik het willen bevriezen naar een Docker-image en mijn eigenlijke applicatiecodering doen
github.com/moononournation/face-aware-phot…
Stap 5: Ontwikkeling Bouwsnelheid versus afbeeldingsgrootte
Misschien heb je ontdekt dat mijn face-aware-photo-osd-project 2 versies van Dockfile heeft:
github.com/moononournation/face-aware-phot…
Tijdens de ontwikkeling vind ik het leuk om het RUN-commando zo klein mogelijk te splitsen en het meest waarschijnlijk het RUN-commando in de laatste stap te veranderen. Dus voor elke wijziging van build voor ontwikkeling, kan ik de vorige gebouwde laag zoveel mogelijk gebruiken en veel bouwsnelheid besparen.
Daarentegen zal ik alle RUN-commando's in één combineren voordat ze worden vrijgegeven. kleinere laag kan de grootte van de Docker-afbeelding aanzienlijk verkleinen. Mijn face-aware-photo-osd-project kan bijvoorbeeld meer dan 100 MB verkleinen.
Stap 6: afbeeldingen met meerdere bogen
Zoals eerder vermeld, is RPi niet dol op verwerkingskracht. Gebruik RPi build Docker-image is misschien geen goede keuze, vooral wanneer je enige RPi andere projecten uitvoert.
Het gebruik van een x86-computer kan u ook helpen bij het bouwen van de Docker-afbeelding, meer details vindt u hier:
www.docker.com/blog/multi-arch-images/
eenvoudige 2 commando's kunnen parallel x86 en ARM Docker Image bouwen:
docker buildx maken --use
docker buildx build --platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab:1.0.1 --push.
Multi Arch kan een image voor meerdere platforms bouwen met dezelfde Docker-imagetag, zodat uw project naadloos op verschillende machines kan worden uitgevoerd. bijv.
docker run -it moononournation/debian-imagemagick-lua-meshlab:1.0.1
Het maakt niet uit of u de bovenstaande opdracht op RPi of uw x86-computer uitvoert, u kunt een Lua-runtime-omgeving krijgen.
Stap 7: Gelukkige RPi
U kunt nu uw RPi-project gemakkelijker ontwikkelen en delen!
Aanbevolen:
Stap voor stap pc bouwen: 9 stappen
Stap voor stap PC-bouw: Benodigdheden: Hardware: MoederbordCPU & CPU-koeler PSU (voedingseenheid)Opslag (HDD/SSD)RAMGPU (niet vereist)KofferTools: SchroevendraaierESD-armband/mattenthermische pasta met applicator
Een PSLab voor mezelf bouwen: 6 stappen
Een PSLab voor mezelf bouwen: drukke dag in het elektronicalab, hè? Heb je ooit problemen gehad met je circuits? Om te debuggen wist je dat je een multimeter of een oscilloscoop of een golfgenerator of een externe nauwkeurige stroombron of zeg maar een logische analysator wilde. Maar het is een hobbypr
Handleiding voor het bouwen van een computer: 8 stappen
Handleiding voor het bouwen van een computer: dit is een instructiegids over hoe iemand zijn eigen, aangepaste personal computer zou bouwen. Hoewel sommigen misschien denken dat het gewoon goedkoper en handiger is om een vooraf gebouwde pc te kopen, zouden de meeste gebruikers merken dat het eigenlijk minder duur is om t
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Uw eigen website bouwen voor beginners: 5 stappen
Uw eigen website bouwen voor beginners: of u er nu van gedroomd heeft computerprogrammeur te worden of ooit een website heeft gebruikt, laten we eerlijk zijn, dat zijn wij allemaal, informatietechnologie is de ruggengraat van het bedrijfsleven geworden. Hoewel programmeren in het begin misschien een beetje eng lijkt, is mijn doel