Indholdsfortegnelse:

Byg Docker -billede til Raspberry Pi: 7 trin
Byg Docker -billede til Raspberry Pi: 7 trin

Video: Byg Docker -billede til Raspberry Pi: 7 trin

Video: Byg Docker -billede til Raspberry Pi: 7 trin
Video: Pi-Hosted : Raspberry Pi 4 Server Setup, Docker Install, Portainer Install, Shell In A Box Part 1 2024, November
Anonim
Byg Docker -billede til Raspberry Pi
Byg Docker -billede til Raspberry Pi

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

Udvikling Byg hastighed mod billedstørrelse
Udvikling Byg hastighed mod billedstørrelse
Udvikling Byg hastighed mod billedstørrelse
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

Multi Arch billeder
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: