Innholdsfortegnelse:

Bygg Docker -bilde for Raspberry Pi: 7 trinn
Bygg Docker -bilde for Raspberry Pi: 7 trinn

Video: Bygg Docker -bilde for Raspberry Pi: 7 trinn

Video: Bygg Docker -bilde for Raspberry Pi: 7 trinn
Video: BTT GTR v1.0/M5 v1.0 - configuration of A4988 and DRV8825 steppers 2024, Juli
Anonim
Bygg Docker -bilde for Raspberry Pi
Bygg Docker -bilde for Raspberry Pi

Denne instruksjonene viser hvordan du bygger et Docker -bilde for Raspberry Pi.

Trinn 1: Hvorfor Docker?

Du kan bruke Raspberry Pi (RPi) til å gjøre mange ting, liten webserver, AI -assistent, Robotics … etc.

Mange prosjekter du vil prøve, men smertepunktene er:

Tid til å bygge

RPi er ikke opptatt av prosessorkraft, og SD/USB -stasjonen begrenset IO -hastigheten. Bruk apt installer all avhengighetspakke krever en time og å bygge kilden krever flere timer. Spesielt for AI -relaterte prosjekter, tid til å vente mer enn tid å prøve.

Versjonskonflikt

Alle prøver mange prosjekter i en RPi. Når du har prøvd et prosjekt og ønsker å bytte til et annet, kan det hende at det oppstår en byggefeil som skyldes konflikt med avhengighetsbiblioteker med tidligere prosjekt. Noen biblioteker slutter å utvikle seg for noen år siden og er avhengige av noen veldig gamle biblioteker. I kontrast var det aktive prosjektet avhengig av de nyeste bibliotekene. Begge prosjektene kan ikke eksistere i samme SD/USB-stasjon ?.

Sikkerhetskopiering av bilder

Siden noen prosjekter ikke kan eksistere samtidig, kan du bare kjøpe mer SD/USB-stasjon for å holde hvert prosjektbilde avhengig. Hvis pengene ikke er begrenset ?. Men det øker problemene med fil-/bildebehandling, noen ganger trenger du bytte SD/USB og starte mange ganger for å finne ut hva du vil.

Vanskelig å dele

Når du bygde prosjektet ditt og vil dele kilden med venner, kan det hende at vennene dine får byggemislykket feed tilbake. Distribusjon/biblioteker versjon for gammel eller for ny, bygge parametere og noen triks. Du må bruke tiden på å løse andre bygge problemer, men ikke støtte selve prosjektet.

Ovennevnte smertepunkter er min erfaring de siste årene. Docker kan hjelpe det meste.

Docker starter bygge fra å velge et forhåndsbygd overordnet bilde. F.eks. debian: jessie-slim start fra en gammel stabil Debian lett vektfordeling; node: 10-buster-slank start fra Debians lette vektfordeling med Node.js 10 installert. Det forhåndsbygde bildet kan spare mye tid for å blinke bildet, få oppdatering og installere avhengige biblioteker. Hvert prosjekt kan starte fra forskjellige OS -versjoner, kjøretidsversjoner og biblioteksversjoner. Når du er ferdig med å utvikle ditt eget prosjekt, kan du skyve Docker -bildet til docker -hub og dele med alle. Du kan beholde alle prosjektdataene på samme SD/USB (data bør rutinemessig sikkerhetskopiere til andre medier). For å lagre lokal lagring kan du til og med rydde opp Docker -bildet når det ikke brukes, når som helst du kan trekke fra Docker -huben igjen.

Trinn 2: Docker Overhead

Docker la til ett virtualiseringslag, overhead er en bekymring. Jeg har ikke testet for mye om Docker -overhead. De fleste googlede resultatene hevder veldig lave omkostninger, og jeg fant dette dokumentet om noe relatert forskning:

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

Trinn 3: Installer Docker

Bare kjør:

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

Ref.:

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

docs.docker.com/get-started/

Trinn 4: Bygg Docker Image

Vennligst finn den offisielle guiden for å bygge docker -bilde:

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

Jeg har to prosjekter som bruker Docker, du kan finne Dockerfilen som en referanse:

BanateCAD krever Lua -kjøretid og noen tilleggs -Lua -biblioteker. Bare Lua 5.1 kan være kompatibel med alle nødvendige Lua -biblioteker, men det er et produkt fra 2006. Den siste Debian -distribusjonen som kan bygge Lua 5.1 -suksess er Jessie (versjonen før nåværende gamle Debian -stall). Så jeg bygde et Lua 5.1 miljø Docker Image for å kjøre det

github.com/moononournation/BanateCAD/tree/…

OpenCV er et aktivt utviklende prosjekt, kildekoden avhenger av de nyeste bibliotekene og kompilatoren. Så det er veldig stor sjanse for å bygge mislykkede biblioteksmetodesignatur, kompilatorversjon, avhengighetskonflikt … Jeg vil gjerne bruke opencv4nodejs til å lage en enkel app og trenger ikke de nyeste funksjonene. Så da jeg fant en måte å bygge opencv4nodejs -suksess på, ville jeg fryse den til et Docker -bilde og gjøre den egentlige applikasjonskodingen min

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

Trinn 5: Utvikling Bygghastighet mot bildestørrelse

Utvikling Bygghastighet mot bildestørrelse
Utvikling Bygghastighet mot bildestørrelse
Utvikling Bygghastighet mot bildestørrelse
Utvikling Bygghastighet mot bildestørrelse

Du kan finne ut at mitt ansiktsbevisste-foto-osd-prosjekt har to versjoner av Dockfile:

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

Mens jeg utvikler, liker jeg å dele RUN -kommandoen så liten som mulig, og jeg vil mest sannsynlig endre RUN -kommandoen til siste trinn. Så for hver build for utviklingsendring kan jeg bruke det tidligere bygde laget så mye som mulig og spare mye byggehastighet.

I kontrast vil jeg kombinere alle RUN -kommandoer i en før utgivelse. mindre lag kan redusere Docker Image -størrelsen mye. Mitt ansiktsbevisste-foto-osd-prosjekt som eksempel kan det redusere mer enn 100 MB i størrelse.

Trinn 6: Multi Arch -bilder

Multi Arch bilder
Multi Arch bilder

Som nevnt tidligere, er RPi ikke opptatt av prosessorkraft. Bruk RPi build Docker -bilde er kanskje ikke et godt valg, spesielt når din eneste RPi kjører andre prosjekter.

Bruk en x86 -datamaskin kan også hjelpe deg med å bygge Docker -bildet. Finn flere detaljer her:

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

enkle 2 kommandoer kan bygge x86 og ARM Docker Image parallelt:

docker buildx create -bruk

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

Multi Arch kan bygge multi -plattformsbilde med samme Docker -bildemerke, slik at prosjektet ditt kan kjøres sømløst i forskjellige maskiner. f.eks.

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

Uansett om du kjører kommandoen ovenfor på RPi eller din x86 -datamaskin, kan du få et Lua -kjøretidsmiljø.

Trinn 7: Happy RPi

Du kan nå lettere utvikle og dele RPi -prosjektet ditt!

Anbefalt: