Innehållsförteckning:
- Steg 1: Varför Docker?
- Steg 2: Docker Overhead
- Steg 3: Installera Docker
- Steg 4: Bygga Docker Image
- Steg 5: Utveckling Bygg hastighet mot bildstorlek
- Steg 6: Multi Arch -bilder
- Steg 7: Glad RPi
Video: Bygg Docker -bild för Raspberry Pi: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
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
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
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:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Bygg Kodi / OSMC Infraröd mottagare och återställ hatt för Raspberry Pi: 5 steg (med bilder)
Bygg Kodi / OSMC Infraröd mottagare och Återställ hatt för Raspberry Pi: Bygg en Kodi / OSMC IR -mottagare och Återställ hatt för Raspberry Pi 3 Från ett rum vill jag: Styr Kodi / OSMC som körs på en Raspberry Pi med en fjärrkontroll Se om Raspberry Pi är påslagenOch jag skulle vilja att min familj
Bygg en Raspberry Pi -dator för mindre än $ 140: 17 steg
Bygg en Raspberry Pi-dator för mindre än $ 140: mars 2017-uppdatering: Skapa en Raspberry Pi-baserad dator med acceptabel prestanda till ett lågt pris för användning i gymnasieelever. De flesta känner till Windows eller MAC-operativsystem. Linux är ett annat operativsystem. Ett mål med detta instruerbara
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva