Sadržaj:

Izgradite Docker sliku za Raspberry Pi: 7 koraka
Izgradite Docker sliku za Raspberry Pi: 7 koraka

Video: Izgradite Docker sliku za Raspberry Pi: 7 koraka

Video: Izgradite Docker sliku za Raspberry Pi: 7 koraka
Video: Equipment Corner- OctoPrint configuration 2024, Novembar
Anonim
Napravite Docker sliku za Raspberry Pi
Napravite Docker sliku za Raspberry Pi

Ove upute pokazuju kako izgraditi Docker sliku za Raspberry Pi.

Korak 1: Zašto Docker?

Možete koristiti Raspberry Pi (RPi) za mnoge stvari, mali web server, AI pomoćnik, robotiku itd.

Mnogi projekti koje želite isprobati, ali bolne točke su:

Vrijeme je za izgradnju

RPi ne voli procesorsku snagu, a SD/USB pogon ograničio je IO brzinu. Koristi apt install all zavisni paket zahtijeva sat vremena, a za izgradnju izvora potrebno je više sati. Posebno za projekte vezane za AI, vrijeme je za čekanje više od vremena za isprobavanje.

Konflikt verzija

Svi isprobavaju mnogo projekata u jednom RPi. Kada ste isprobali projekt i htjeli biste se prebaciti na drugi, možda ćete otkriti grešku u izgradnji uzrokovanu sukobom verzije biblioteka ovisnosti s prethodnim projektom. Neke biblioteke prestaju se razvijati prije nekoliko godina i zavise od nekih vrlo starih biblioteka. Nasuprot tome, aktivni projekt ovisio je o najnovijim bibliotekama. Oba projekta ne mogu koegzistirati u istom SD/USB pogonu ?.

Sigurnosna kopija slike

Budući da neki projekti ne mogu postojati zajedno, jednostavno kupite više SD/USB pogona kako bi slika svakog projekta ostala ovisna. Ako novac nije ograničen ?. Ali to povećava poteškoće u upravljanju datotekama/slikama, ponekad vam je potrebno zamijeniti SD/USB i pokrenuti se više puta da biste saznali što želite.

Teško podijeliti

Kada napravite svoj projekt i želite podijeliti izvor s prijateljima, vaši prijatelji mogu dobiti povratnu datoteku pri izgradnji. Verzija distribucije/biblioteke prestara ili previše nova, parametri izgradnje i neki trikovi. Morate iskoristiti vrijeme za rješavanje drugih problema pri izgradnji, ali ne i za podršku samom projektu.

Gore navedene bolne točke su moje iskustvo u ovih nekoliko godina. Docker može većinom pomoći.

Docker započinje izgradnju odabirom unaprijed izgrađene roditeljske slike. Npr. debian: jessie-slim početak od stare stabilne Debian distribucije male težine; čvor: 10-buster-slim start iz Debian distribucije male težine sa instaliranim Node.js 10. Unaprijed izgrađena slika može uštedjeti mnogo vremena za fleširanje slike, ažuriranje i instaliranje biblioteka koje zavise. Svaki projekt može započeti s različite verzije OS -a, runtime verzije i verzije biblioteke. Kada završite s razvijanjem vlastitog projekta, možete gurnuti sliku Dockera u docker čvorište i podijeliti je sa svima. Sve podatke o projektu možete čuvati na istom SD/USB -u (podaci bi trebali rutinski sigurnosno kopirati na druge medije). Za uštedu lokalne pohrane, čak možete i očistiti sliku Dockera kada se ne koristi, kad god možete ponovo povući iz Docker čvorišta.

Korak 2: Docker iznad glave

Docker je dodao jedan sloj za virtualiziranje, a troškovi su zabrinjavajući. Nisam previše testirao oko Dockera. Većina rezultata na Google -u tvrdi da imaju vrlo niske troškove i pronašao sam ovaj dokument o nekim srodnim istraživanjima:

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

Korak 3: Instalirajte Docker

Jednostavno pokrenite:

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

Ref.:

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

docs.docker.com/get-started/

Korak 4: Izgradnja Docker slike

Molimo vas da pronađete službeni vodič o izgradnji docker slike:

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

Imam 2 projekta koji koriste Docker, možda ćete pronaći Dockerfile kao referencu:

BanateCAD zahtijeva vrijeme izvođenja Lua i neke Lua biblioteke. Samo Lua 5.1 može biti kompatibilan sa svim potrebnim Lua bibliotekama, ali to je proizvod iz 2006. Najnovija Debian distribucija koja može izgraditi uspjeh Lua 5.1 je Jessie (verzija prije trenutne stare Debian stabilne). Zato sam izgradio Docker Image okruženje Lua 5.1 za njegovo pokretanje

github.com/moononournation/BanateCAD/tree/…

OpenCV je projekt koji se aktivno razvija, izvorni kod ovisi o najnovijim bibliotekama i kompajleru. Tako da su velike šanse za izgradnju neuspješne, potpis metode biblioteke, verzija kompajlera, sukob zavisnosti … Htio bih koristiti opencv4nodejs za izradu jednostavne aplikacije i ne zahtijevaju najnovije funkcije. Dakle, kada sam pronašao način za postizanje uspjeha opencv4nodejs, želio bih ga zamrznuti na Docker sliku i napraviti svoje kodiranje aplikacije

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

Korak 5: Razvoj Brzina izgradnje vs Veličina slike

Razvoj Brzina izgradnje vs Veličina slike
Razvoj Brzina izgradnje vs Veličina slike
Razvoj Brzina izgradnje vs Veličina slike
Razvoj Brzina izgradnje vs Veličina slike

Možda ste otkrili da moj projekt prepoznavanja lica-foto-osd ima 2 verzije Dockfile-a:

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

U toku razvoja, volim podijeliti RUN naredbu što je moguće manje i organizovati najverovatnije promjenu naredbe RUN u posljednji korak. Tako da za svaku verziju za razvojnu promjenu mogu koristiti prethodni izgrađeni sloj što je više moguće i uštedjeti veliku brzinu izgradnje.

Nasuprot tome, prije izdavanja kombinirat ću sve RUN naredbe u jednu. manji sloj može znatno smanjiti veličinu slike Docker. Moj projekt sa osvještavanjem lica photo-osd kao primjer može smanjiti veličinu veću od 100 MB.

Korak 6: Multi Arch slike

Multi Arch Images
Multi Arch Images

Kao što je već spomenuto, RPi ne voli procesorsku snagu. Upotreba RPi build Docker slike možda nije dobar izbor, posebno ako vaš jedini RPi pokreće druge projekte.

Upotreba x86 računara također vam može pomoći u izgradnji Docker slike. Više detalja potražite ovdje:

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

jednostavne 2 naredbe mogu paralelno izgraditi x86 i ARM Docker Image:

docker buildx create --use

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

Multi Arch može stvoriti sliku za više platformi s istom Docker oznakom slike, tako da se vaš projekt može neometano izvoditi na različitim mašinama. npr.

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

Bez obzira na to da gornju naredbu pokrenete na RPi -u ili svom x86 računaru, možete dobiti Lua runtime okruženje.

Korak 7: Sretan RPi

Sada možete lakše razvijati i dijeliti svoj RPi projekt!

Preporučuje se: