Innehållsförteckning:

Bygg Docker -bild för Raspberry Pi: 7 steg
Bygg Docker -bild för Raspberry Pi: 7 steg

Video: Bygg Docker -bild för Raspberry Pi: 7 steg

Video: Bygg Docker -bild för Raspberry Pi: 7 steg
Video: BTT GTR v1.0/M5 v1.0 - configuration of A4988 and DRV8825 steppers 2024, November
Anonim
Bygg Docker -bild för Raspberry Pi
Bygg Docker -bild för Raspberry Pi

Denna instruktioner visar hur man bygger en Docker -bild för Raspberry Pi.

Steg 1: Varför Docker?

Du kan använda Raspberry Pi (RPi) göra många saker, liten webbserver, AI -assistent, Robotics … etc.

Många projekt du vill prova, men smärtpunkterna är:

Dags att bygga

RPi är inte sugen på processorkraft och SD/USB -enheten begränsade IO -hastigheten. Använd apt installera allt beroendepaket kräver en timme och att bygga källan kräver fler timmar. Speciellt för AI -relaterade projekt, dags att vänta mer än tid att prova.

Versionskonflikt

Alla provar många projekt i en RPi. När du har provat ett projekt och vill byta till ett annat kan det hända att något byggfel orsakas av beroendebibliotekets versionskonflikt med tidigare projekt. Vissa bibliotek slutar utvecklas för några år sedan och är beroende av några mycket gamla bibliotek. Däremot berodde det aktiva projektet på de senaste biblioteken. Båda projekten kan inte samexistera i samma SD/USB-enhet ?.

Bildbackup

Eftersom vissa projekt inte kan samexistera, köper du bara mer SD/USB-enhet för att hålla varje projektbild beroende är ett sätt. Om pengarna inte är begränsade ?. Men det ökar svårigheterna med fil-/bildhantering, ibland behöver du byta SD/USB och starta många gånger för att ta reda på vad du vill.

Svårt att dela

När du byggde ditt projekt och skulle vilja dela källan till vänner kan dina vänner få tillbaka det misslyckade flödet. Distribution/bibliotek version för gammal eller för ny, bygga parametrar och några knep. Du behöver använda tiden för att lösa andra byggproblem, men inte stödja själva projektet.

Ovanstående smärtpunkter är min erfarenhet under de här åren. Docker kan hjälpa det mesta.

Docker börjar bygga från att välja en förbyggd överordnad bild. T.ex. debian: jessie-slim start från en gammal stabil Debian lättviktsfördelning; nod: 10-buster-smal start från Debians lättviktsfördelning med Node.js 10 installerat. Den förbyggda bilden kan spara mycket tid för att flasha bild, få uppdatering och installera beroende bibliotek. Varje projekt kan utgå från olika OS -versioner, körtidsversioner och biblioteksversioner. När du har utvecklat ditt eget projekt kan du flytta Docker -bilden till dockningsnavet och dela till alla. Du kan behålla alla projektdata på samma SD/USB (data bör rutinmässig säkerhetskopiering till andra medier). För att spara lokal lagring kan du till och med rensa Docker -bilden när den inte används, när som helst du kan dra från Docker -hubben igen.

Steg 2: Docker Overhead

Docker har lagt till ett virtualiseringslager, omkostnader är ett problem. Jag har inte testat för mycket om Docker -omkostnaderna. De flesta Googlade resultat hävdar mycket låga omkostnader och jag hittade det här dokumentet om viss relaterad forskning:

domino.research.ibm.com/library/cyberdig.n…

Steg 3: Installera Docker

Kör helt enkelt:

curl -sSL https://get.docker.com | sh

Ref.:

www.raspberrypi.org/blog/docker-comes-to-…

docs.docker.com/get-started/

Steg 4: Bygga Docker Image

Vänligen hitta den officiella guiden för att bygga dockningsbild:

docs.docker.com/get-started/part2/

Jag har två projekt som använder Docker, du kan hitta Dockerfilen som referens:

BanateCAD kräver Lua -körning och några ytterligare Lua -bibliotek. Endast Lua 5.1 kan kompatibelt med alla Lua -bibliotek som krävs, men det är produkten från 2006. Den senaste Debian -distributionen som kan bygga Lua 5.1 -framgång är Jessie (versionen före nuvarande Debian gamla stall). Så jag byggde en Lua 5.1 miljö Docker Image för att köra den

github.com/moononournation/BanateCAD/tree/…

OpenCV är ett aktivt utvecklande projekt, källkoden beror på de senaste biblioteken och kompilatorn. Så det är mycket stor chans att bygga misslyckad, biblioteks metod signatur, kompilatorversion, beroendekonflikt … Jag skulle vilja använda opencv4nodejs för att göra en enkel app och behöver inte de senaste funktionerna. Så när jag hittade ett sätt att bygga opencv4nodejs framgång, skulle jag vilja frysa den till en Docker Image och göra min faktiska programkodning

github.com/moononournation/face-aware-phot…

Steg 5: Utveckling Bygg hastighet mot bildstorlek

Utveckling Bygghastighet mot bildstorlek
Utveckling Bygghastighet mot bildstorlek
Utveckling Bygghastighet mot bildstorlek
Utveckling Bygghastighet mot bildstorlek

Du kanske hittade att mitt ansiktsmedvetna-foto-osd-projekt har två versioner av Dockfile:

github.com/moononournation/face-aware-phot…

Under utvecklingen gillar jag split RUN -kommandot så litet som möjligt och ordnar mest troligt att RUN -kommandot ändras till sista steget. Så för varje build för utvecklingsändring kan jag använda tidigare byggt lager så mycket som möjligt och spara mycket bygghastighet.

Däremot kommer jag att kombinera alla RUN -kommandon i ett innan release. mindre lager kan mycket minska Docker Image -storleken. Mitt ansiktsmedvetna-foto-osd-projekt som exempel kan det minska mer än 100 MB i storlek.

Steg 6: Multi Arch -bilder

Multi Arch -bilder
Multi Arch -bilder

Som nämnts tidigare är RPi inte sugen på processorkraft. Använd RPi build Docker -bild kanske inte är ett bra val, särskilt när din enda RPi kör andra projekt.

Använd en x86 -dator kan också hjälpa dig att bygga Docker -bilden, hitta mer information här:

www.docker.com/blog/multi-arch-images/

enkla 2 -kommandon kan bygga x86 och ARM Docker Image parallellt:

docker buildx skapa --använd

docker buildx build-plattform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab: 1.0.1 --push.

Multi Arch kan bygga multi -plattformsbild med samma Docker -bildtagg, så att ditt projekt kan köras i olika maskiner sömlöst. t.ex.

docker run -it moononournation/debian-imagemagick-lua-meshlab: 1.0.1

Oavsett om du kör ovanstående kommando på RPi eller din x86 -dator kan du få en Lua -runtime -miljö.

Steg 7: Glad RPi

Du kan nu utveckla och dela ditt RPi -projekt lättare!

Rekommenderad: