Kako

Tako uporabljate priklopno postajo na Raspberry Pi

Raspberry Pi je idealen za namestitev vseh vrst programov, ki se morajo vedno izvajati. Najbolj zanesljiv način za to je z Dockerjem: vsak program se izvaja ločeno v vsebniku, zato ne morejo posegati drug v drugega. Pokazali vam bomo, kako uporabljati Docker na Raspberry Pi in kaj morate upoštevati.

Če imate Raspberry Pi že nekaj časa doma, boste verjetno še naprej nanj namestili vedno več programske opreme. Home Assistant, Zwave2Mqtt, Node-RED, Rhasspy ... Vse gre v redu, dokler ne posodobite vse programske opreme na novo različico in nenadoma eden od vaših programov preneha delovati in nejasno sporoči o napaki.

Kaj se je zgodilo? Pogost scenarij je naslednji. Programska oprema A in B uporabljata različico 1.0 knjižnice C. Medtem je izdana različica 2.0 knjižnice C, ki ni združljiva s C 1.0. Programska oprema A se prepisuje za uporabo knjižnice C 2.0, medtem ko razvijalci programske opreme B niso tako hitri in se nekaj časa držijo knjižnice C 1.0. Posodobite programsko opremo A in nameščena je knjižnica C 2.0. Toda Raspbian lahko namesti samo eno različico knjižnice. Posledično programska oprema B nenadoma ne deluje več, ker ni združljiva s knjižnico C 2.0.

V praksi distribucije Linuxa storijo vse, da se izognejo takim situacijam, vendar se to zgodi. Včasih na precej bolj subtilne načine, tako da ni vedno vedno jasno, kaj je vzrok težave.

01 Kaj je Docker?

Docker razvijalcem olajša distribucijo aplikacij za izvajanje v katerem koli sistemu Linux. Te aplikacije lahko najdete v obliki slike na Docker Hub. Takšna slika je v bistvu predloga za minimalni sistem Linux, ki ga lahko zaženete na vrhu Raspbiana v obliki vsebnika.

Vsaka posoda je popolnoma izolirana od drugih posod. Torej aplikacija v vsebniku ne vidi aplikacij v drugih vsebnikih. Namestitev in posodobitev enega vsebnika zagotavlja, da nova različica ne bo v nasprotju z aplikacijami v drugih vsebnikih. Če želite torej na Raspberry Pi zagnati več kot nekaj aplikacij, vam bo Docker to pomagal zanesljivo izvesti. Zahvaljujoč Dockerju lahko tudi varno eksperimentirate z novo programsko opremo: če vam ni všeč, lahko posodo nato preprosto odstranite.

02 Namestite Docker

Predvidevamo, da ste namestili Raspbian, zadostuje različica Lite. Nato se prijavite prek ssh za izvajanje nalog v tem osnovnem tečaju. Najprej namestite Docker z ukazom:

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

Nato določite uporabnika pi (prijavljeni ste) dostop do Dockerja, tako da z ukazom ne dobite vseh ukazov Docker sudo mora opraviti:

sudo usermod pi -aG docker

Odjavite se z izhodom in nato znova. Zdaj pripada uporabnik pi v skupino docker.

03 Pozdravljen svet

Zdaj bi morali imeti možnost zagona prvega vsebnika Dockerja:

docker run --rm hello-world

Ta ukaz bo zagnal Dockerjev vsebnik hello-world. Ta vsebnik v svojih izhodih natančno prikaže, kaj se dogaja: slike ni mogoče najti v vašem Raspberry Pi, nato pa jo Docker prenese iz Docker Hub. Nato Docker na podlagi te slike ustvari vsebnik in v njem zažene program. Po možnosti -rm posoda bo očiščena po zaprtju programa. Zdaj veste, da je Docker pravilno nameščen in deluje.

Hypriot

V tej osnovni vadnici bomo preprosto namestili Docker na Raspbian, vendar so možni tudi drugi operacijski sistemi, če vas zanima Docker na Raspberry Pi. Obstaja Hypriot: operacijski sistem za Raspberry Pi, ki je optimiziran za uporabo Dockerja. Vse, kar morate storiti, je namestiti to sliko na kartico micro-SD vašega Raspberry Pi in Docker lahko začnete uporabljati takoj. Hypriot je še posebej zanimiv, če na svojem Raspberry Pi poganjate samo vsebnike Docker in nič drugega.

04 Ustvari posode

Osnova za delo z vsebniki Docker je narejena z ukazom docker, kot smo pokazali v prejšnjem koraku. Običajno ne želite zagnati vsebnika z Dockerjem in ga takoj zapreti, ampak pustite, da se zažene. Možnosti torej ne uporabljamo --rm. Poleg tega želite, da ta vsebnik deluje v ozadju, ne da bi ves čas videl izpise na zaslonu. Temu služi možnost -d.

Če bi vsebnik zagnali na ta način, bi mu Docker dal naključno ime, kar ni koristno, če imate več kot peščico vsebnikov. Z možnostjo --ime NAME zato dajte vsebniku določeno ime.

Potem morate pogledati tudi omrežne povezave. Ker je vsak vsebnik Dockerja izoliran, na primer ne morete samo dostopati do spletnega strežnika, ki se izvaja v vratih 80 v vsebniku. Zato morate Dockerju naročiti, naj vsako zahtevo na, recimo, vrati 8888 na Raspberry Pi na vrata 80 v določenem vsebniku. To storite z možnostjo -p 8888: 80. Če sestavite vse te možnosti za vzorčni vsebnik vsebino / whoami, zaženite naslednji ukaz:

docker run -d --name whoami -p 8888: 80 vsebinski / whoami

Če bo vse v redu, boste čez nekaj časa videli dolg niz šestnajstiških številk (npr 5122c935ce5178751a59699d2c5605c607700bd04e5f57a6c18de434ae53956e). To je ID vsebnika. Če surfate do // IP: 8888 z namesto IP ip naslov vašega Raspberry Pi, boste v vsebniku videli spletno stran, ki jo ustvari spletni strežnik.

05 Pazite na zabojnike

Ko zaženete nekaj takšnih posod, začne upravljanje postajati pomembno. Najprej je koristno videti, kateri zabojniki se izvajajo:

docker ps

Nato boste videli informacije o vseh aktivnih vsebnikih (z možnostjo -a vključno s kontejnerji, ki so bili ustavljeni). Prvi stolpec vsebuje enolični ID za vsak vsebnik, poleg slike, iz katere je bil vsebnik ustvarjen. Stolpec STANJE najboljši pogled na težave. Če se na primer vsebnik znova zažene s težavo, jo boste videli tukaj.

V stolpcu PRISTANIŠČA lahko vidite uporabljena vrata. Na primer, kdo je tam pred našim zabojnikom 0,0.0,0:8888->80/tcp. To pomeni, da bodo vrata TCP 8888 na Raspberry Pi preusmerjena na vrata TCP 80 na vsebniku. V zadnjem stolpcu vidite ime vsebnika, ki ga lahko uporabite v nadaljnjih ukazih Docker.

Če želite več informacij, pride ukaz statistika dockerja koristno. Nato boste videli statistične podatke za vsak vsebnik, na primer porabo procesorja, pomnilnika in omrežja. Če želite vse informacije, ki jih Docker pozna o določenem vsebniku, zaženite ta ukaz z ID-jem ali imenom vsebnika:

docker pregleda VSEBINO

In končno, če si želite ogledati dnevnike vsebnika, zaženite enega od teh dveh ukazov:

dnevniki dockerjev CONTAINER

dnevniki docker -f CONTAINER

Z možnostjo -f dnevnike spremljate sproti, medtem ko jih posoda generira.

06 Upravljanje vsebnikov in slik

Če želite ustaviti, zagnati ali znova zagnati tekoči vsebnik, lahko to preprosto storite s temi ukazi:

dock stop CONTAINER

docker zažene CONTAINER

docker znova zaženite CONTAINER

Če želite začasno zaustaviti vsebnik (vsi programi v njem bodo začasno "zamrznjeni"), zaženite ta ukaz:

zaustavitev dockerja CONTAINER

Po tem ukazu se bodo vsi programi v vsebniku znova zagnali:

docker sprosti zabojnik CONTAINER

Z ukazom slike dockerja videli boste seznam slik, ki jih je Docker prenesel. Za našo posodo whoami si lahko ogledate v stolpcu REPOZITORIJ besedilo vsebinsko / whoami stojalo in v koloni OZNAKA država najnovejši. Polno ime slike bi bilo vsebinsko / whoami: najnovejše so, ampak tiste najnovejši je privzeta vrednost za oznako, zato jo lahko izpustimo. Zato v svoji nalogi v četrtem odstavku uporabljamo docker run samo vsebinsko / whoami kot slika.

V stolpcu USTVARJENO lahko vidite, kako dolgo nazaj je bila ta slika prenesena. Če želite posodobiti to sliko, zaženite naslednji ukaz:

docker pull containerous / whoami: najnovejše

Docker bo nato prenesel najnovejšo različico slike ali vam sporočil, da je slika posodobljena. Če greš potem spet slike dockerja videli boste, da je bila dodana slika.

Toda trenutni vsebnik whoami še vedno uporablja staro sliko. Če želite to nadgraditi, zaprite (docker stop whoami) in izbriši (docker rm wohami) ustvarite vsebnik in ga znova ustvarite z ukazom docker run iz razdelka 4.

Urejeno

Če redno posodabljate slike Dockerja, da se v vsebniku zažene najnovejša različica, bodo stare slike ostale. Kartica micro-SD vašega Raspberry Pi z zmogljivostjo največ nekaj deset gigabajtov se zato lahko hitro napolni, še posebej, če uporabljate velike posode. Na primer vsebniki, kot sta Home Assistant in Rhasspy, so večji od gigabajta. Zdaj Docker deluje s sistemom, tako da posodobitev ne prenese in shrani tega celotnega gigabajta znova, vendar se po številnih posodobitvah potrebni prostor za shranjevanje še povečuje. Z nalogo docker rmi IMAGE_ID sliko izbrišete na podlagi ID-ja, ki ste ga navedli v izhodu ukaza slike dockerja najdbe. Docker pozna tudi ukaz slika dockerja sliva ki odstrani vse slike, ki jih vsebnik ne uporablja. S docker sistem suhe slive izbrišite tudi ustavljene vsebnike, omrežja, ki jih ne uporablja vsaj en vsebnik, in datoteke predpomnilnika.

07 Sveski

Naš vzorčni vsebnik whoami ni uporabil nobenih konfiguracijskih podatkov ali podatkov. Lahko pa imenik na Raspberry Pi delite z vsebnikom Docker, da lahko dostopa do podatkov iz njega. Docker takšen imenik v skupni rabi imenuje nosilec.

Če boste na Raspberry Pi delali z več vsebniki, je priporočljivo, da njihove imenike sestavite skupaj. Ustvarite imenik za to, na primer z:

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

Nato položite v mapo kontejnerji / nginx / podatki datoteka index.html s html stranjo.

Nato lahko z nginx (spletni strežnik) zaženete vsebnik, s katerim delite ta imenik:

docker run -d --name nginx -p 8080: 80 -v / home / pi / container / nginx / data: / usr / share / nginx / html: ro nginx

Nato se vsebnik zažene s spletnim strežnikom in namesti imenik / home / pi / container / nging / data na Raspberry Pi v posodi na lokaciji / usr / share / nginx / html, z dostopom samo za branje (ro pomeni samo za branje). Če surfate do IP: 8080 dobili boste datoteko html index.html videti.

08 Docker Compose

Do zdaj smo z ukazom ročno zagnali vsebnike Docker docker run. Če pa uporabljate še nekaj vsebnikov Docker in želite redno popravljati njihovo konfiguracijo, je boljši drugačen pristop: vse shranite v eno konfiguracijsko datoteko. To deluje z Docker Compose.

Če želite to narediti, najprej namestite Pythonov upravljalnik paketov pip in nato Docker Compose (ki je program Python) s temi ukazi:

sudo apt namestite python3-pip

sudo pip3 namesti docker-compose

Zdaj lahko v eni datoteki konfigurirate več vsebnikov Docker docker-compose.yml dal. Če želite to narediti, ustvarite datoteko Docker Compose z:

nano docker-compose.yml

Vstavite naslednjo konfiguracijo za naše primere vsebnikov whoami in nginx:

različica: '3.7'

storitve:

kdo sem jaz:

slika: vsebujoč / whoami

ime_posode: whoami

ponovni zagon: vedno

vrata:

- 8888:80

nginx:

slika: nginx

ime_posode: nginx

ponovni zagon: vedno

vrata:

- 8080:80

prostornine:

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

09 YAML

Datoteko shranite s Ctrl + O in zaprite nano s Ctrl + X. To je datoteka YAML (s pripono .yml). YAML (pomeni rekurzivno okrajšavo "YAML Ain't Markup Language") je oblika datoteke za berljivo definiranje informacij o konfiguraciji. Več informacij najdete na uradni spletni strani.

V tej datoteki lahko vidite, da dva vsebnika definiramo kot storitvi. Za vsak vsebnik določimo uporabljeno sliko, ime, ki naj ga dobimo, in ali naj se vsebnik samodejno znova zažene v primeru težav. Poleg tega definiramo tudi preusmerjena vrata in količine.

Vse te informacije lahko najdete tudi v ukaznih vrsticah z docker run, vendar je v tej datoteki Docker Compose nekoliko bolj urejena.

10 Delo z Docker Compose

Ko dobite datoteko docker-compose.yml lahko enostavno ustvarite in zaženete vsebnike, ki so v njem definirani:

docker-compose up -d

Po tem lahko te vsebnike upravljate z ukazom docker, vendar ima docker-compose tudi veliko možnosti posebej za upravljanje vsebnikov, ki ste jih ustvarili z Docker Compose. Torej vse počistite z naslednjim ukazom, vsi definirani vsebniki bodo ustavljeni in odstranjeni:

docker-sestavi dol

Dnevnikom vseh zabojnikov lahko sledite tudi z:

docker-sestavi dnevnike -f

Vsak vsebnik prikaže sporočila dnevnika v drugačni barvi. Docker Compose ima tudi dobro znano melodijo za zaustavitev, zagon in ponovni zagon vseh vsebnikov:

docker-compose stop

docker-compose se začne

docker-compose ponovno zaženi

Posodabljanje vseh vsebnikov v datoteki Docker Compose poteka z naslednjima dvema ukazoma:

docker-compose pull

docker-compose ponovno zaženi

Prvi ukaz prenese nove slike za vse vsebnike, ki ste jih definirali, drugi ukaz pa znova zažene vse te vsebnike, tako da uporabljajo novo sliko. Nato lahko stare slike odstranite po želji z:

slika dockerja sliva

11 In naprej

Slike Dockerja številnih aplikacij najdete na Docker Hub. LinuxServer.io ima tudi na desetine Dockerjevih slik, ki jih vzdržujejo prostovoljci. Te slike so dobro vzdrževane in dokumentirane ter vse uporabljajo podoben pristop in osnovno infrastrukturo.

Poskusite se omejiti na "uradne" slike Dockerja, ki jih ponuja projekt, ali slike zaupanja vrednih oseb, kot je LinuxServer.io. Ker načeloma lahko vsakdo objavi Dockerjeve slike na Docker Hubu, vendar niso vedno posodobljeni.

Pravilna arhitektura procesorja

Pomembno je, da prenesete Dockerjeve slike za pravilno arhitekturo procesorja. Raspberry Pi ima procesor ARM, ki ni združljiv s procesorji Intel ali AMD, ki jih najdemo v osebnih računalnikih. Veliko Dockerjevih slik je objavljenih za samodejni prenos pravilne različice za vašo procesorsko arhitekturo. V Docker Hub-u lahko najdete, katere arhitekture so podprte na strani o želeni Dockerjevi sliki. Za Raspbian je to arm32v7, arm / v7 ali armhf. Če se prikaže napaka napaka v formatu exec verjetno ste prenesli sliko napačne arhitekture procesorja. Če se to zgodi, boste morali prenesti sliko z drugo oznako. Na primer, projekt motionEye distribuira svojo uradno sliko Dockerja z dvema možnima oznakama: zaženete ccrisan / motioneye: master-amd64 na Intel združljivih procesorjih in ccrisan / motioneye: master-armhf na Raspberry Pi.

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