Kuidas

Nii kasutate oma Raspberry Pi dokki

Raspberry Pi sobib ideaalselt igasuguste programmide installimiseks, mis peavad alati töötama. Kõige usaldusväärsem viis seda teha on Docker: iga programm töötab eraldi konteineris, nii et nad ei saa üksteist segada. Näitame teile, kuidas Dockerit Raspberry Pi'l kasutada ja mida meeles pidada.

Kui teil on mõnda aega juba Raspberry Pi kodus olnud, on tõenäoline, et installite sellele üha rohkem tarkvara. Koduabiline, Zwave2Mqtt, Node-RED, Rhasspy ... Kõik läheb hästi, kuni värskendate kogu oma tarkvara uuele versioonile ja äkki lakkab mõni teie programm töötamast ning annab ebamäärase veateate.

Mis juhtus? Levinud stsenaarium on järgmine. Tarkvara A ja B kasutavad mõlemad teegi C versiooni 1.0. Vahepeal vabastatakse teegi C versioon 2.0, mis ei ühildu versiooniga C 1.0. Tarkvara A kirjutatakse ümber teegi C 2.0 kasutamiseks, samas kui tarkvara B arendajad pole nii kiired ja jäävad mõnda aega teeki C 1.0 juurde. Värskendate tarkvara A ja teek C 2.0 on installitud. Kuid Raspbian saab installida ainult ühe versiooni teegist. Seetõttu ei tööta tarkvara B ühtäkki enam, kuna see ei ühildu teegiga C 2.0.

Praktikas teevad Linuxi distributsioonid kõik endast oleneva, et selliseid olukordi vältida, kuid see juhtub. Mõnikord palju peenematel viisidel, nii et alati pole kohe selge, mis on probleemi põhjus.

01 Mis on Docker?

Docker muudab arendajate jaoks hõlpsaks rakenduste levitamise mis tahes Linuxi süsteemis töötamiseks. Need rakendused leiate pildina Docker Hubist. Selline pilt on põhimõtteliselt minimaalse Linuxi süsteemi mall, mida saate Raspbiani peal konteineri kujul käivitada.

Iga konteiner on teistest anumatest täielikult eraldatud. Nii et konteineris olev rakendus ei näe rakendusi teistes konteinerites. Ühe konteineri installimine ja värskendamine tagab, et see uus versioon ei lähe vastuollu teiste konteinerite rakendustega. Nii et kui soovite oma Raspberry Pi-s käivitada rohkem kui käputäie rakendusi, aitab Docker teil seda usaldusväärselt teha. Tänu Dockerile saate ka uue tarkvaraga ohutult katsetada: kui see teile ei meeldi, võite konteineri pärast lihtsalt eemaldada.

02 Installige Docker

Eeldame, et olete Raspbian'i installinud, piisab Lite versioonist. Seejärel logite sisse ssh-i kaudu, et selle põhikursuse ülesandeid täita. Esmalt installige Docker käsuga:

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

Seejärel määrake kasutaja pi (olete sisse logitud) juurdepääs Dockerile, nii et te ei saa kõiki Dockeri käske käsuga sudo peab sooritama:

sudo usermod pi -aG dokkija

Logi välja väljumisega ja siis uuesti sisse. Nüüd kuulub kasutaja pi rühmale dokk.

03 Tere maailm

Nüüd peaksite saama käivitada esimese Dockeri konteineri:

doki jooks - rm tere-maailm

See käsk käivitab Dockeri konteineri tere-maailma. See konteiner näitab väljundis täpselt, mis toimub: pilti ei leitud teie Raspberry Pi'st ja seejärel laadib Docker selle alla Docker Hubist. Seejärel loob Docker selle pildi põhjal konteineri ja käivitab selles oleva programmi. Valiku järgi -rm konteiner puhastatakse pärast programmi sulgemist. Nüüd teate, et Docker on õigesti installitud ja töötab.

Hüppaat

Paigaldame sellesse põhiõpetusse Dockeri lihtsalt Raspbianile, kuid kui olete huvitatud Dockerist Raspberry Pi-s, on võimalikud ka muud opsüsteemid. Seal on Hypriot: Raspberry Pi opsüsteem, mis on optimeeritud Dockeri kasutamiseks. Piisab sellest, kui installite selle pildi oma Raspberry Pi mikro-SD-kaardile ja võite kohe Dockerit kasutama hakata. Hüpriot on eriti huvitav, kui käitate oma Raspberry Pi-s ainult Dockeri konteinereid ja mitte midagi muud.

04 Looge konteinerid

Dockeri konteineritega töötamise alus tehakse käsuga dokk, nagu näitasime eelmises etapis. Tavaliselt ei taha te Dockeriga konteinerit käitada ja kohe sulgeda, vaid laske sellel joosta. Nii et me ei kasuta võimalust --rm. Lisaks soovite, et see konteiner töötaks taustal, ilma et näeksite kogu aeg väljundit ekraanil. Seda see variant teenib -d.

Kui alustaksite konteinerit sel viisil, paneks Docker sellele juhusliku nime, mis pole kasulik, kui teil on rohkem kui käputäis konteinereid. Valikuga --nimi NAME seepärast andke konteinerile kindel nimi.

Siis tuleb vaadata ka võrguühendusi. Kuna iga Dockeri konteiner on isoleeritud, ei saa te juurde pääseda näiteks konteineris 80. pordil töötavale veebiserverile. Seetõttu peate Dockerile ülesandeks edastada kõik nõuded, näiteks Raspberry Pi sadamas 8888, kindlas konteineris asuvasse porti 80. Sa teed seda võimalust -p 8888: 80. Kui panite kõik need suvandid proovikonteinerile saturous / whoami kokku, käivitage järgmine käsk:

dokkimisjooks -d --name whoami -p 8888: 80 saturous / whoami

Kui kõik läheb hästi, näete mõne aja pärast pikka heksakohalist joont (nagu 5122c935ce5178751a59699d2c5605c607700bd04e5f57a6c18de434ae53956e). See on konteineri ID. Kui surfate // IP: 8888 koos asemel IP oma Raspberry Pi ip-aadressi näete konteineris veebiserveri loodud veebilehte.

05 Vaata oma konteinereid

Kui olete mõne sellise konteineri käivitanud, hakkab juhtimine muutuma oluliseks. Kõigepealt on kasulik vaadata, millised konteinerid töötavad:

dokkija ps

Seejärel näete teavet kõigi aktiivsete konteinerite kohta (koos suvandiga -a sealhulgas peatatud konteinerid). Esimene veerg sisaldab iga konteineri kordumatut ID-d pildi kõrval, millest konteiner loodi. Veerg STATUS kõige paremini vaadata probleeme. Näiteks kui teie konteiner taaskäivitub mõne probleemiga, näete seda siin.

Veerus SADAMAD näete kasutatud porte. Näiteks whoami on seal meie konteineri ees 0.0.0.0:8888->80/tcp. See tähendab, et Raspberry Pi TCP-port 8888 suunatakse konteineri TCP-porti 80. Viimases veerus näete konteineri nime, mida saate kasutada täiendavates Dockeri käskudes.

Kui soovite rohkem teavet, tuleb käsk doki statistika kasulik. Seejärel näete iga konteineri statistikat, näiteks protsessori, mälu ja võrgu tarbimist. Kui soovite kogu teavet, mida Docker konkreetse konteineri kohta teab, käivitage see käsk koos konteineri ID või nimega:

docker kontrollige konteinerit

Ja lõpuks, kui soovite vaadata konteineri logisid, käivitage üks neist kahest käsust:

dokkija logib KONTEINER

doki logid -f KONTEINER

Valikuga -f jälgite logisid reaalajas, kuni konteiner neid genereerib.

06 Hallake oma konteinereid ja pilte

Kui soovite töötava konteineri peatada, käivitada või taaskäivitada, saate seda hõlpsalt teha vastavalt järgmiste käskudega:

dokk-peatus KONTEINER

dokkija alustab konteinerit CONTAINER

dokk taaskäivitage KONTEINER

Kui soovite konteineri ajutiselt peatada (kõik selles olevad programmid on ajutiselt "külmunud"), käivitage see käsk:

doki paus CONTAINER

Pärast seda käsku töötavad kõik konteineris olevad programmid uuesti:

doki peatamine KONTEINER

Käsuga doki pildid näete Dockeri alla laaditud piltide loendit. Meie whoami konteineri jaoks näete veergu HOIDLA teksti piirav / whoami seista ja veerus TAG riik hiljemalt. Pildi täielik nimi oleks hoidev / whoami: viimane on, aga need hiljemalt on sildi vaikeväärtus, seega võib selle ära jätta. Seetõttu kasutame oma lõigus 4 antud ülesandes järgmist doki jooks lihtsalt piirav / whoami pildina.

Veerus LOODUD näete, kui kaua aega tagasi see pilt alla laaditi. Selle pildi värskendamiseks käivitage järgmine käsk:

dockeri tõmme sisaldav / whoami: hiljemalt

Seejärel laadib Docker alla pildi uusima versiooni või ütleb teile, et pilt on ajakohane. Kui pärast uuesti minna doki pildid näete, et pilt on lisatud.

Kuid praegune whoami konteiner kasutab endiselt vana pilti. Selle täiendamiseks sulgege (dokk peatus whoami) ja kustutada (dokk rm wohami) loote konteineri ja loote konteineri uuesti dokkeri käsu abil jaotisest 4.

Korralik

Kui värskendate oma Dockeri pilte regulaarselt, et konteineris oleks uusim versioon, jäävad vanad pildid alles. Teie Raspberry Pi mikro-SD-kaart, mille maht on kuni mõnikümmend gigabaiti, võib seetõttu kiiresti täis saada, eriti kui kasutate suuri konteinereid. Näiteks mahutid, näiteks Home Assistanti ja Rhasspy pakutavad, on rohkem kui gigabaidised. Nüüd töötab Docker süsteemiga, nii et värskendus seda täisgigabaiti uuesti alla ei laadiks ega salvestaks, kuid pärast mitmeid värskendusi suureneb nõutav salvestusruum jätkuvalt. Ülesandega dokkija rmi IMAGE_ID kustutate pildi ID põhjal, mille sisestasite käsu väljundis doki pildid leiab. Docker teab ka käsku doki pildi kärpimine mis eemaldab kõik pildid, mida konteiner ei kasuta. Koos dokisüsteemi ploom kustutage ka peatatud konteinerid, võrgud, mida vähemalt üks konteiner ei kasuta, ja vahemälufailid.

07 Köited

Meie proovikonteiner whoami ei kasutanud ühtegi konfiguratsiooniandmeid ega -andmeid. Kuid saate oma Raspberry Pi kataloogi Dockeri konteineriga jagada, et see saaks selle andmetele juurde pääseda. Docker nimetab sellist jagatud kataloogi helitugevuseks.

Kui kavatsete oma Raspberry Pi-s töötada mitme konteineriga, on soovitatav kõik nende kataloogid kokku panna. Looge selleks kataloog, näiteks:

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

Seejärel asetage kausta konteinerid / nginx / andmed fail index.html HTML-lehega.

Seejärel saate nüüd käivitada konteineri nginx-iga (veebiserver), millega jagate seda kataloogi:

doki käivitamine -d - nimi nginx -p 8080: 80 -v / home / pi / konteinerid / nginx / andmed: / usr / share / nginx / html: ro nginx

Seejärel käivitub konteiner veebiserveriga ja ühendab kataloogi / home / pi / konteinerid / sidumine / andmed oma Raspberry Pi peal asuvas konteineris / usr / share / nginx / html, ainult lugemisõigusega (ro tähistab kirjutuskaitstud). Kui surfate IP: 8080 saate HTML-faili index.html et näha.

08 Dockeri kirjutamine

Siiani oleme Dockeri konteinerid käsitsi käivitanud käsuga doki jooks. Kuid kui kasutate veel mõnda Dockeri konteinerit ja soovite nende konfiguratsiooni regulaarselt kohandada, on parem kasutada teistsugust lähenemist: panna kõik ühte konfiguratsioonifaili. See töötab Docker Compose'iga.

Selleks installige kõigepealt Pythoni paketihalduri pip ja seejärel Docker Compose (mis on Pythoni programm) järgmiste käskudega:

sudo apt installige python3-pip

sudo pip3 installige docker-compose

Nüüd saate ühes failis konfigureerida mitu Dockeri konteinerit docker-compose.yml panema. Selleks looge fail Docker Compose järgmiste failidega:

nano dokk-komponeeri.yml

Pange järgmine näite konteinerite whoami ja nginx jaoks järgmine konfiguratsioon:

versioon: '3.7'

teenused:

kes ma olen:

pilt: hoidev / whoami

konteiner_nimi: whoami

taaskäivitage: alati

sadamad:

- 8888:80

nginx:

pilt: nginx

konteiner_nimi: nginx

taaskäivitage: alati

sadamad:

- 8080:80

mahud:

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

09 YAML

Salvestage fail klahvikombinatsiooniga Ctrl + O ja sulgege nano klahvikombinatsiooniga Ctrl + X. See on YAML-fail (laiendiga .yml). YAML (tähistab rekursiivset lühendit "YAML Ain't Markup Language") on failivorming konfiguratsiooniteabe loetaval määratlemiseks. Lisateavet leiate ametlikult veebisaidilt.

Selles failis näete, et määratleme teenustena kaks konteinerit. Iga konteineri jaoks määratleme kasutatud pildi, nime, mis konteinerile tuleks anda, ja kas konteiner peaks probleemide korral automaatselt taaskäivituma. Lisaks määratleme ka ümbersuunatud pordid ja mahud.

Kogu selle teabe leiate ka käsurealt koos doki jooks, kuid selles Docker Compose failis on see veidi organiseeritud.

10 Docker Compose'iga töötamine

Kui olete faili saanud docker-compose.yml saate selles määratletud konteinereid hõlpsasti luua ja käivitada:

dokk-komponeeri üles -d

Pärast seda saate neid konteinereid hallata käsuga Docker, kuid Docker-Compose'il on ka palju võimalusi spetsiaalselt Docker Compose'i abil loodud konteinerite haldamiseks. Nii et puhastate kõik järgmise käsuga, kõik määratletud konteinerid peatatakse ja eemaldatakse:

dokk-komponeeri maha

Kõigi konteinerite logide üle saate jälgida ka järgmist:

dokkija-koostama logisid -f

Iga konteiner kuvab oma logisõnumid erineva värviga. Docker Compose'il on ka tuntud hääl kõigi konteinerite peatamiseks, käivitamiseks ja taaskäivitamiseks:

dokk-komponeerimise peatus

docker-compose algab

docker-compose taaskäivitamine

Kõigi teie Docker Compose'i faili konteinerite värskendamine toimub järgmise kahe käsuga:

dokk-komponeeri tõmme

docker-compose taaskäivitamine

Esimene käsk laadib alla kõik teie määratletud konteinerite uued pildid ja teine ​​käsk taaskäivitab kõik need konteinerid nii, et nad kasutaksid uut pilti. Seejärel saate vanad pildid soovi korral eemaldada:

doki pildi kärpimine

11 Ja kaugemale

Dockeri keskusest leiate paljude rakenduste Dockeri pilte. LinuxServer.io-l on ka kümneid vabatahtlike hooldatud Dockeri pilte. Need pildid on hästi hooldatud ja dokumenteeritud ning kõik kasutavad sarnast lähenemist ja põhilist infrastruktuuri.

Proovige piirduda projekti enda pakutavate "ametlike" Dockeri piltidega või usaldusväärsete osapoolte piltidega, näiteks LinuxServer.io. Sest põhimõtteliselt võib igaüks Dockeri pilte Docker Hubis avaldada, kuid neid ei ole alati ajakohastatud.

Õige protsessori arhitektuur

On oluline, et laadiksite Dockeri pildid alla õige protsessori arhitektuuri jaoks. Raspberry Pi-l on ARM-protsessor, mis ei ühildu arvutites leiduvate Inteli ega AMD-protsessoritega. Paljud Dockeri pildid avaldatakse teie protsessori arhitektuuri jaoks õige versiooni automaatseks allalaadimiseks. Docker Hubist leiate soovitud Dockeri pildi lehelt, milliseid arhitektuure toetatakse. Raspbidi jaoks on see arm32v7, arm / v7 või armhf. Kui saate vea exec-vormingu viga laadisite tõenäoliselt alla vale protsessori arhitektuuri pildi. Sel juhul peate alla laadima teise märgendiga pildi. Näiteks levitab motionEye projekt oma ametlikku Dockeri pilti kahe võimaliku sildiga: teie käivitate ccrisan / motioneye: master-amd64 Inteli ühilduvate protsessorite kohta ja ccrisan / motioneye: kapten-armhf Vaarika Pi peal.