Cuprins:

Construiți imaginea Docker pentru Raspberry Pi: 7 pași
Construiți imaginea Docker pentru Raspberry Pi: 7 pași

Video: Construiți imaginea Docker pentru Raspberry Pi: 7 pași

Video: Construiți imaginea Docker pentru Raspberry Pi: 7 pași
Video: Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build. 2024, Noiembrie
Anonim
Construiți imaginea Docker pentru Raspberry Pi
Construiți imaginea Docker pentru Raspberry Pi

Aceste instrucțiuni arată cum să construiți o imagine Docker pentru Raspberry Pi.

Pasul 1: De ce Docker?

Puteți utiliza Raspberry Pi (RPi) face multe lucruri, server web mic, asistent AI, robotică … etc.

Multe proiecte pe care doriți să le încercați, dar punctele de durere sunt:

E timpul să construiești

RPi nu dorește puterea de procesare, iar unitatea SD / USB a limitat viteza IO. Utilizați pachetul apt install all dependency necesită o oră, iar construirea sursei necesită mai multe ore. Mai ales pentru proiectele legate de AI, este timpul să așteptați mai mult decât să încercați.

Conflict de versiune

Toată lumea încearcă multe proiecte într-un singur RPi. Când ați încercat un proiect și doriți să treceți la altul, este posibil să găsiți o eroare de compilare cauzată de conflictul dintre versiunile bibliotecilor de dependență și proiectul anterior. Unele biblioteci nu se mai dezvoltă acum câțiva ani și depind de unele biblioteci foarte vechi. În schimb, proiectul activ depindea de cele mai recente biblioteci. Ambele proiecte nu pot coexista în aceeași unitate SD / USB ?.

Backup imagine

Deoarece unele proiecte nu pot coexista, pur și simplu cumpărați mai multe unități SD / USB pentru a păstra dependența fiecărei imagini de proiect. Dacă banii nu sunt limitați ?. Dar crește dificultățile de gestionare a fișierelor / imaginilor, uneori aveți nevoie de swap SD / USB și porniți de multe ori pentru a afla ce doriți.

Greu de distribuit

Atunci când v-ați construit proiectul și doriți să împărtășiți sursa prietenilor, este posibil ca prietenii dvs. să primească feed-ul eșuat la compilare. Versiunea de distribuție / biblioteci este prea veche sau prea nouă, construind parametri și câteva trucuri. Trebuie să folosiți timpul pentru a rezolva alte probleme de construire, dar nu pentru a susține proiectul în sine.

Punctele de durere de mai sus sunt experiența mea din acești câțiva ani. Docker poate ajuta majoritatea.

Docker începe construirea de la selectarea unei imagini părinte predefinite. De exemplu. debian: jessie-slim începe de la o distribuție stabilă de greutate ușoară Debian; nod: 10-buster-slim începe de la distribuția ușoară Debian cu Node.js 10 instalat. Imaginea pre-construită poate economisi mult timp pentru a bloca imaginea, pentru a obține actualizarea și pentru a instala biblioteci dependente. Fiecare proiect poate porni de la diferite versiuni de sistem de operare, versiuni de rulare și versiuni de biblioteci. Când ați terminat de dezvoltat propriul proiect, puteți împinge imaginea Docker în hub-ul Docker și să o distribuiți tuturor. Puteți păstra toate datele proiectului la același SD / USB (datele ar trebui să facă backup de rutină pe alte medii). Pentru a economisi spațiul de stocare local, puteți chiar curăța imaginea Docker atunci când nu o utilizați, oricând puteți extrage din hub Docker din nou.

Pasul 2: Docker Overhead

Docker a adăugat un strat de virtualizare, cheltuielile generale sunt o preocupare. Nu am testat prea multe despre Docker. Cele mai multe rezultate Googled susțin că sunt cheltuieli reduse și am găsit acest document despre unele cercetări conexe:

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

Pasul 3: Instalați Docker

Pur și simplu rulați:

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

Ref.:

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

docs.docker.com/get-started/

Pasul 4: Construirea imaginii Docker

Vă rugăm să găsiți ghidul oficial despre imaginea de andocare a clădirii:

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

Am 2 proiecte folosind Docker, este posibil să găsiți fișierul Docker ca referință:

BanateCAD necesită runtime Lua și câteva biblioteci Lua adăugate. Numai Lua 5.1 poate fi compatibil cu toate bibliotecile Lua necesare, dar este produsul anului 2006. Cea mai recentă distribuție Debian care poate construi succesul Lua 5.1 este Jessie (Versiunea dinaintea actualului vechi stabil Debian). Așa că am construit un mediu Lua 5.1 Docker Image pentru al rula

github.com/moononournation/BanateCAD/tree/…

OpenCV este un proiect în dezvoltare activă, codul sursă depinde de cele mai recente biblioteci și compilator. Deci, este foarte mare șansa de a construi eșuat, semnătura metodei bibliotecilor, versiunea compilatorului, conflictul de dependență … Aș dori să folosesc opencv4nodejs pentru a crea o aplicație simplă și nu sunt necesare cele mai recente caracteristici. Așadar, când am găsit o modalitate de a construi succesul opencv4nodejs, aș vrea să o îngheț într-o imagine Docker și să fac codificarea aplicației mele

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

Pasul 5: Dezvoltare Viteză de construcție Vs Dimensiunea imaginii

Dezvoltare Build Speed Vs Dimensiunea imaginii
Dezvoltare Build Speed Vs Dimensiunea imaginii
Dezvoltare Build Speed Vs Dimensiunea imaginii
Dezvoltare Build Speed Vs Dimensiunea imaginii

S-ar putea să găsiți că proiectul meu face-aware-photo-osd are 2 versiuni de Dockfile:

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

În timpul dezvoltării, îmi place comanda RUN divizată cât mai mică posibil și aranjez cel mai probabil schimbarea comenzii RUN la ultimul pas. Așadar, pentru fiecare versiune pentru schimbarea dezvoltării, pot utiliza stratul construit anterior cât mai mult posibil și pot economisi o viteză de construcție mare.

În schimb, voi combina toate comenzile RUN într-una înainte de lansare. un strat mai mic poate reduce dimensiunea imaginii Docker. Proiectul meu foto-osd conștient de față, ca exemplu, poate reduce mai mult de 100 MB în dimensiune.

Pasul 6: Imagini cu arc multiplu

Imagini cu arc multiplu
Imagini cu arc multiplu

Așa cum am menționat anterior, RPi nu este foarte interesat de puterea de procesare. Utilizarea imaginii RPi build Docker poate să nu fie o alegere bună, mai ales atunci când singurul dvs. RPi rulează alte proiecte.

Utilizați un computer x86, de asemenea, vă poate ajuta să construiți imaginea Docker, vă rugăm să găsiți mai multe detalii aici:

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

2 comenzi simple pot crea x86 și ARM Docker Image în paralel:

docker buildx create --use

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

Multi Arch poate crea imagini cu mai multe platforme cu aceeași etichetă de imagine Docker, astfel încât proiectul dvs. să poată rula fără probleme în diferite mașini. de exemplu.

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

Indiferent dacă executați comanda de mai sus pe RPi sau computerul dvs. x86, puteți obține un mediu de execuție Lua.

Pasul 7: RPi fericit

Acum puteți dezvolta și partaja proiectul dvs. RPi mai ușor!

Recomandat: