Kaip

Štai kaip jūs naudojate „Raspberry Pi“ doką

„Raspberry Pi“ idealiai tinka įdiegti visų rūšių programas, kurios visada turi būti vykdomos. Patikimiausias būdas tai padaryti yra naudojant „Docker“: kiekviena programa veikia atskirai talpykloje, todėl negali trukdyti viena kitai. Mes parodysime, kaip naudoti „Docker“ ant „Raspberry Pi“ ir ko nepamiršti.

Jei kurį laiką jau turite namuose „Raspberry Pi“, yra tikimybė, kad jame ir toliau įdiegsite vis daugiau programinės įrangos. „Home Assistant“, „Zwave2Mqtt“, „Node-RED“, „Rhasspy“ ... Viskas gerai, kol atnaujinsite visą savo programinę įrangą į naują versiją ir staiga viena iš jūsų programų nustos veikti ir pateiks neaiškų klaidos pranešimą.

Kas nutiko? Dažnas scenarijus yra toks. A ir B programinė įranga naudoja C bibliotekos 1.0 versiją. Tuo tarpu išleidžiama C bibliotekos 2.0 versija, kuri nesuderinama su C 1.0. Programinė įranga A perrašoma naudoti biblioteką C 2.0, o programinės įrangos B kūrėjai nėra tokie greiti ir kurį laiką laikosi bibliotekos C 1.0. Atnaujinate programinę įrangą A ir įdiegta biblioteka C 2.0. Bet „Raspbian“ gali įdiegti tik vieną bibliotekos versiją. Todėl programinė įranga B staiga nebeveikia, nes ji nesuderinama su biblioteka C 2.0.

Praktiškai „Linux“ paskirstymai daro viską, kad išvengtų tokių situacijų, tačiau taip būna. Kartais daug subtilesniais būdais, kad ne visada būtų aišku, kokia yra problemos priežastis.

01 Kas yra „Docker“?

„Docker“ leidžia kūrėjams lengvai platinti programas, kad jos veiktų bet kurioje „Linux“ sistemoje. Šias programas galima rasti „Docker Hub“ atvaizdo pavidalu. Toks vaizdas iš esmės yra minimalios „Linux“ sistemos šablonas, kurį konteinerio pavidalu galite paleisti ant „Raspbian“.

Kiekvienas konteineris yra visiškai izoliuotas nuo kitų konteinerių. Taigi programa talpykloje nemato programų kituose konteineriuose. Vieno sudėtinio rodinio įdiegimas ir atnaujinimas užtikrina, kad ta nauja versija neprieštaraus kitose talpyklose esančioms programoms. Taigi, jei „Raspberry Pi“ norite paleisti daugiau nei kelias programas, „Docker“ padės tai padaryti patikimai. „Docker“ dėka taip pat galite saugiai eksperimentuoti su nauja programine įranga: jei jums tai nepatinka, galite paprasčiausiai išimti konteinerį.

02 Įdiekite „Docker“

Manome, kad įdiegėte „Raspbian“, pakanka „Lite“ versijos. Tada jūs prisijungiate per ssh, kad atliktumėte šio pagrindinio kurso užduotis. Pirmiausia įdiekite „Docker“ naudodami komandą:

garbanos -sSL //get.docker.com | sh

Tada nurodykite vartotoją pi (esate prisijungę) prieigą prie „Docker“, todėl su komanda negausite visų „Docker“ komandų sudo privalo atlikti:

sudo usermod pi -aG docker

Atsijunkite išėję ir vėl prisijunkite. Dabar vartotojas priklauso pi grupei dokininkas.

03 Sveikas pasauli

Dabar turėtumėte galėti paleisti pirmąjį „Docker“ konteinerį:

docker run --rm sveikas pasaulis

Ši komanda paleis „Docker“ konteinerio „labas“ pasaulį. Šis konteineris savo išvestyje rodo tiksliai, kas vyksta: vaizdas nerandamas jūsų „Raspberry Pi“ ir tada „Docker“ atsisiunčia jį iš „Docker Hub“. Tada „Docker“ sukuria konteinerį pagal šį vaizdą ir paleidžia jame esančią programą. Pagal variantą -rm konteineris bus išvalytas uždarius programą. Dabar žinote, kad „Docker“ yra tinkamai įdiegtas ir veikia.

Hipriotas

Šioje pagrindinėje pamokoje tiesiog įdiegsime „Docker“ „Raspbian“, tačiau, jei jus domina „Docker on Raspberry Pi“, galimos ir kitos operacinės sistemos. Yra „Hypriot“: „Raspberry Pi“ operacinė sistema, optimizuota naudoti „Docker“. Viskas, ką jums reikia padaryti, tai įdiegti šį vaizdą į „Raspberry Pi“ „micro-SD“ kortelę ir galite nedelsdami pradėti naudoti „Docker“. Hipriotas yra ypač įdomus, jei „Docker“ konteinerius naudojate tik savo „Raspberry Pi“ ir nieko kito.

04 Kurkite konteinerius

Darbo su „Docker“ konteineriais pagrindas atliekamas vadovaujantis komanda dokininkas, kaip parodėme ankstesniame etape. Paprastai nenorite paleisti konteinerio su „Docker“ ir nedelsdami uždaryti, bet leiskite jam veikti. Taigi mes nesinaudojame galimybe --rm. Be to, norite, kad tas konteineris veiktų fone, visą laiką nematydamas išvesties ekrane. Tai yra tas variantas -d.

Jei pradėtumėte konteinerį tokiu būdu, „Docker“ suteiktų jam atsitiktinį pavadinimą, kuris nėra naudingas, jei turite daugiau nei keletą konteinerių. Su galimybe --pavadinimas NAME todėl konteineriui suteikite fiksuotą pavadinimą.

Tada jūs taip pat turite pažvelgti į tinklo ryšius. Kadangi kiekvienas „Docker“ sudėtinis rodinys yra izoliuotas, negalite pasiekti, pavyzdžiui, žiniatinklio serverio, veikiančio 80 prievade, esančiame konteineryje. Todėl jūs turite nurodyti „Docker“ persiųsti bet kokį prašymą, tarkim, „Raspberry Pi“ 8888 prievadui į 80 prievadą konkrečiame konteineryje. Jūs tai darote pasirinkdami -p 8888: 80. Jei sudėsite visas šias parinktis sudėtiniam / whoami mėginio konteineriui, vykdykite šią komandą:

dokininko paleidimas -d - vardas whoami -p 8888: 80 talpinantis / whoami

Jei viskas gerai, po kurio laiko pamatysite ilgą šešioliktainių skaitmenų eilutę (pvz., 5122c935ce5178751a59699d2c5605c607700bd04e5f57a6c18de434ae53956e). Tai yra sudėtinio rodinio ID. Jei naršote iki // IP: 8888 su vietoj IP „Raspberry Pi“ IP adresą, konteineryje pamatysite interneto serverio sugeneruotą tinklalapį.

05 Stebėkite savo konteinerius

Paleidus kelis tokius konteinerius, valdymas tampa svarbus. Visų pirma, naudinga sužinoti, kurie konteineriai veikia:

dokininkas ps

Tada pamatysite informaciją apie visus aktyvius sudėtinius rodinius (su parinktimi -a įskaitant sustabdytus konteinerius). Pirmame stulpelyje yra unikalus kiekvieno sudėtinio rodinio ID šalia vaizdo, iš kurio sukurtas sudėtinis rodinys. Stulpelis BŪKLĖ geriausia pažvelgti į problemas. Pvz., Jei sudėtinis rodinys iš naujo paleidžiamas kilus problemai, pamatysite jį čia.

Stulpelyje Uostai galite pamatyti naudojamus prievadus. Pavyzdžiui, whoami yra priešais mūsų konteinerį 0.0.0.0:8888->80/tcp. Tai reiškia, kad „Raspberry Pi“ TCP prievadas 8888 bus nukreiptas į konteinerio 80 TCP prievadą. Paskutiniame stulpelyje matote konteinerio pavadinimą, kurį galite naudoti kitose „Docker“ komandose.

Jei norite gauti daugiau informacijos, ateina komanda dokininkų statistika naudinga. Tada pamatysite kiekvieno konteinerio statistiką, pvz., Procesoriaus, atminties ir tinklo sąnaudas. Jei norite gauti visą informaciją, kurią „Docker“ žino apie konkretų konteinerį, vykdykite šią komandą naudodami konteinerio ID arba pavadinimą:

dokininkas patikrina KONTEINERĮ

Galiausiai, jei norite peržiūrėti konteinerio žurnalus, vykdykite vieną iš šių dviejų komandų:

dokų žurnalai KONTEINERIS

dokų žurnalai -f KONTEINERIS

Su galimybe -f stebite žurnalus realiuoju laiku, kol konteineris juos generuoja.

06 Tvarkykite savo konteinerius ir vaizdus

Jei norite sustabdyti, paleisti ar paleisti iš naujo veikiantį konteinerį, galite lengvai tai padaryti naudodami atitinkamai šias komandas:

dokininko sustojimas KONTEINERIS

dokininkas pradeda „CONTAINER“

dokininkas iš naujo paleiskite CONTAINER

Jei norite laikinai pristabdyti konteinerį (visos jame esančios programos bus laikinai „užšaldytos“), vykdykite šią komandą:

dokininko pauzė KONTEINERIS

Po šios komandos visos konteinerio programos vėl bus paleistos:

dokininkas atjungia KONTEINERĮ

Su komanda dokininkų vaizdai pamatysite Docker atsisiųstų vaizdų sąrašą. Mūsų whoami konteinerį galite pamatyti stulpelyje SAUGyklA tekstas talpinantis / whoami stovėti ir kolonoje ŽYMA valstija vėliausiai. Pilnas atvaizdo pavadinimas būtų talpinantis / whoami: vėliausias yra, bet tie vėliausiai yra numatytoji žymos vertė, todėl jos galima praleisti. Todėl atlikdami priskyrimą 4 dalyje mes naudojame dokininkų bėgimas tiesiog talpinantis / whoami kaip vaizdas.

Stulpelyje SUKURTA galite pamatyti, prieš kiek laiko šis vaizdas buvo atsisiųstas. Norėdami atnaujinti šį vaizdą, vykdykite šią komandą:

dokininkas traukia talantus / whoami: naujausias

Tada „Docker“ atsisiųs naujausią vaizdo versiją arba pasakys, kad vaizdas yra atnaujintas. Jei po to vėl eisi dokininkų vaizdai pamatysite, kad pridėtas vaizdas.

Tačiau dabartiniame „whoami“ konteineryje vis tiek naudojamas senas vaizdas. Norėdami tai atnaujinti, uždarykite (dokininkas sustabdyti whoami) ir ištrinti (dokininkas rm wohami) sukursite konteinerį ir atkurkite konteinerį naudodami „Docker run“ komandą iš 4 skyriaus.

Tvarkinga

Jei reguliariai atnaujinsite „Docker“ vaizdus ir paleisite naujausią versiją į konteinerį, seni vaizdai išliks. Todėl jūsų „Raspberry Pi“ mikro-SD kortelė, kurios talpa yra ne daugiau kaip kelios dešimtys gigabaitų, gali greitai užpildyti, ypač jei naudojate didelius konteinerius. Pavyzdžiui, tokie konteineriai kaip „Home Assistant“ ir „Rhasspy“ yra daugiau nei gigabaito dydžio. Dabar „Docker“ veikia su sistema, kad naujinys daugiau neatsisiųstų ir neišsaugotų viso gigabaito, tačiau po daugelio atnaujinimų reikalinga saugykla ir toliau didėja. Su užduotimi dokininkas rmi IMAGE_ID ištrinate vaizdą pagal ID, kurį nurodėte komandos išvestyje dokininkų vaizdai radiniai. Dockeris taip pat žino komandą dokininko atvaizdo genėti kuris pašalina visus vaizdus, ​​kurių nenaudoja konteineris. Su dokininko sistemos genėti taip pat ištrinkite sustabdytus konteinerius, tinklus, kurių nenaudoja bent vienas konteineris, ir talpyklos failus.

07 tomai

Mūsų pavyzdiniame konteineryje „whoami“ nebuvo naudojami jokie konfigūracijos duomenys ar duomenys. Bet jūs galite bendrinti savo „Raspberry Pi“ katalogą su „Docker“ konteineriu, kad jis galėtų pasiekti duomenis iš jo. Tokį bendrą katalogą Dockeris vadina tūriu.

Jei ketinate dirbti su keletu „Raspberry Pi“ talpyklų, rekomenduojama visus sudėti jų katalogus. Sukurkite tam katalogą, pavyzdžiui naudodami:

mkdir -p / home / pi / container / nginx / data

Tada įdėkite į aplanką konteineriai / nginx / duomenys failas index.html su HTML puslapiu.

Tada galite paleisti sudėtinį rodinį su „nginx“ (žiniatinklio serveriu), su kuriuo bendrinate šį katalogą:

„Docker run“ - vardas - „nginx“ -p 8080: 80 -v / home / pi / konteineriai / „nginx“ / duomenys: / usr / share / nginx / html: ro nginx

Tada konteineris paleidžiamas su žiniatinklio serveriu ir pritvirtina katalogą / home / pi / container / nging / data ant jūsų „Raspberry Pi“ konteinerio toje vietoje / usr / share / nginx / html, tik su skaitymo prieiga (ro reiškia tik skaityti). Jei naršote iki IP: 8080 gausite HTML failą index.html matyti.

08 „Docker Compos“

Iki šiol rankiniu būdu paleidome „Docker“ konteinerius su komanda dokininkų bėgimas. Bet jei naudojate dar keletą „Docker“ talpyklų ir norite reguliariai koreguoti jų konfigūraciją, geriau naudoti kitokį metodą: viską sutalpinti į vieną konfigūracijos failą. Tai veikia su „Docker Compose“.

Norėdami tai padaryti, pirmiausia įdiekite „Python“ paketų tvarkyklės „pip“ ir tada „Docker Compose“ (tai yra „Python“ programa) su šiomis komandomis:

sudo apt įdiekite python3-pip

sudo pip3 įdiekite „docker-compose“

Dabar viename faile galite sukonfigūruoti kelis „Docker“ konteinerius docker-compose.yml įdėti. Norėdami tai padaryti, sukurkite „Docker Compose“ failą naudodami:

nano docker-compose.yml

Įveskite šią konfigūraciją mūsų „whoami“ ir „nginx“ konteinerių pavyzdžiams:

versija: „3.7“

paslaugos:

kas aš esu:

vaizdas: talpinantis / whoami

konteinerio_vardas: whoami

paleisti iš naujo: visada

uostai:

- 8888:80

Nginx:

vaizdas: nginx

konteinerio_vardas: nginx

paleisti iš naujo: visada

uostai:

- 8080:80

tomai:

- / home / pi / container / nginx / data: / usr / share / nginx / html: ro

09 JAMLAS

Išsaugokite failą naudodami „Ctrl“ + O ir uždarykite „nano“ naudodami „Ctrl“ + X. Tai YAML failas (su plėtiniu .yml). YAML (reiškia rekursyvų santrumpą „YAML nėra žymėjimo kalba“) yra failo formatas, skirtas nuskaityti konfigūracijos informaciją. Daugiau informacijos galite rasti oficialioje svetainėje.

Šiame faile galite pamatyti, kad du konteinerius apibrėžiame kaip paslaugas. Kiekvienam konteineriui mes apibūdiname naudojamą vaizdą, pavadinimą, kurį turėtume suteikti konteineriui, ir, jei kilus problemoms, jis turėtų būti paleistas iš naujo. Be to, mes taip pat apibrėžiame peradresuotus prievadus ir apimtis.

Visą šią informaciją taip pat galima rasti komandų eilutėse su dokininko bėgimas, bet šiame „Docker Compose“ faile jis yra šiek tiek labiau sutvarkytas.

10 Darbas su „Docker Compose“

Kai gausite failą docker-compose.yml galite lengvai sukurti ir paleisti jame apibrėžtus konteinerius:

dokininkas-komponuok -d

Po to galite tvarkyti šiuos konteinerius naudodami komandą „Docker“, tačiau pats „Docker-Compose“ taip pat turi daugybę galimybių, skirtų tvarkyti sudėtinius rodinius, kuriuos sukūrėte naudodami „Docker Compose“. Taigi viską išvalysite naudodami šią komandą, visi apibrėžti konteineriai bus sustabdyti ir pašalinti:

dokininkas-komponuok žemyn

Taip pat galite stebėti visų konteinerių žurnalus:

dokininkas-kurkite žurnalus -f

Kiekviename sudėtiniame rodinyje žurnalo pranešimai pateikiami skirtinga spalva. „Docker Compose“ taip pat turi gerai žinomą visų konteinerių sustabdymo, paleidimo ir paleidimo melodiją:

dokininko-kūrinio sustojimas

prasideda dokininkas-kūrimas

docker-compose paleisti iš naujo

Visi „Docker Compose“ failo sudėtiniai rodiniai atnaujinami atliekant šias dvi komandas:

dokininkas-kompozicijos traukimas

docker-compose paleiskite iš naujo

Pirmoji komanda atsisiunčia naujus visų jūsų apibrėžtų konteinerių vaizdus, ​​o antroji komanda iš naujo paleidžia visus tuos konteinerius, kad jie naudotų naują vaizdą. Tada, jei norite, galite pašalinti senus vaizdus naudodami:

dokininko atvaizdo genėti

11 Ir anapus

„Docker Hub“ galite rasti daugelio programų „Docker“ vaizdus. „LinuxServer.io“ taip pat turi dešimtis savanorių prižiūrimų „Docker“ vaizdų. Šie vaizdai yra gerai prižiūrimi ir dokumentuojami, ir visi jie naudoja panašų požiūrį ir pagrindinę infrastruktūrą.

Pabandykite apsiriboti „oficialiais“ „Docker“ vaizdais, kuriuos teikia pats projektas, arba patikimų šalių, tokių kaip „LinuxServer.io“, vaizdais. Nes iš principo „Docker“ vaizdus „Docker Hub“ gali publikuoti bet kas, tačiau jie ne visada yra atnaujinami.

Tinkama procesoriaus architektūra

Svarbu, kad atsisiųstumėte „Docker“ vaizdus, ​​kad procesorius būtų tinkamas. „Raspberry Pi“ turi ARM procesorių, kuris nesuderinamas su kompiuteriuose esančiais „Intel“ ar „AMD“ procesoriais. Daugelis „Docker“ vaizdų yra paskelbti, kad būtų automatiškai atsisiųsta tinkama versija jūsų procesoriaus architektūrai. „Docker Hub“ galite rasti puslapyje palaikomą architektūrą apie norimą „Docker“ vaizdą. „Raspbian“ tai arm32v7, arm / v7 arba armhf. Jei gausite klaidą „Exec“ formato klaida tikriausiai atsisiuntėte netinkamos procesoriaus architektūros vaizdą. Jei taip nutiks, turėsite atsisiųsti vaizdą su kita žyma. Pvz., „MotionEye“ projektas platina savo oficialų „Docker“ vaizdą su dviem galimomis žymomis: jūs paleisite ccrisan / motioneye: master-amd64 apie „Intel“ suderinamus procesorius ir ccrisan / motioneye: meistras-armhf ant aviečių Pi.

$config[zx-auto] not found$config[zx-overlay] not found