Miten

Näin käytät Raspberry Pi -telakointiasemaa

Raspberry Pi on ihanteellinen kaikenlaisten ohjelmien asentamiseen, jotka on aina suoritettava. Luotettavin tapa tehdä tämä on Docker: jokainen ohjelma toimii erillään kontissa, joten ne eivät voi häiritä toisiaan. Näytämme sinulle, miten Dockeria käytetään Vadelma Pi: ssä ja mitä pitää mielessä.

Jos sinulla on jo Raspberry Pi kotona jonkin aikaa, todennäköisesti asennat siihen yhä enemmän ohjelmistoja. Home Assistant, Zwave2Mqtt, Node-RED, Rhasspy ... Kaikki menee hyvin, kunnes päivität kaikki ohjelmistot uuteen versioon, ja yhtäkkiä yksi ohjelmistasi lakkaa toimimasta ja antaa epämääräisen virhesanoman.

Mitä tapahtui? Yleinen skenaario on seuraava. Ohjelmistot A ja B käyttävät molemmat kirjaston C versiota 1.0. Kirjaston C versio 2.0 julkaistaan, mikä ei ole yhteensopiva C 1.0: n kanssa. Ohjelmisto A kirjoitetaan uudestaan ​​käyttämään kirjastoa C 2.0, kun taas ohjelmiston B kehittäjät eivät ole niin nopeita ja pysyvät kirjastossa C 1.0 jonkin aikaa. Päivität ohjelmiston A ja kirjasto C 2.0 on asennettu. Mutta Raspbian voi asentaa vain yhden version kirjastosta. Tämän seurauksena ohjelmisto B yhtäkkiä ei enää toimi, koska se ei ole yhteensopiva kirjaston C 2.0 kanssa.

Käytännössä Linux-jakelut tekevät kaiken voitavansa välttääkseen tällaiset tilanteet, mutta se tapahtuu. Joskus paljon hienovaraisemmilla tavoilla, joten ei aina ole heti selvää, mikä on ongelman syy.

01 Mikä on Docker?

Dockerin avulla kehittäjien on helppo jakaa sovelluksia ja ajaa niitä missä tahansa Linux-järjestelmässä. Nämä sovellukset löytyvät kuvan muodossa Docker Hubista. Tällainen kuva on pohjimmiltaan malli minimaaliselle Linux-järjestelmälle, jonka voit suorittaa Raspbianin päällä kontin muodossa.

Jokainen säiliö on täysin eristetty muista säiliöistä. Joten säiliössä oleva sovellus ei näe sovelluksia muissa säiliöissä. Yhden säilön asentaminen ja päivittäminen varmistaa, että uusi versio ei ole ristiriidassa muiden säilöjen sovellusten kanssa. Joten jos haluat käyttää enemmän kuin kourallista sovelluksia Raspberry Pi -laitteellasi, Docker auttaa sinua tekemään sen luotettavasti. Dockerin ansiosta voit myös kokeilla turvallisesti uusia ohjelmistoja: jos et pidä siitä, voit yksinkertaisesti poistaa astian jälkeenpäin.

02 Asenna Docker

Oletamme, että olet asentanut Raspbianin, Lite-versio on riittävä. Sitten kirjaudut sisään ssh: n kautta suorittamaan tämän peruskurssin tehtävät. Asenna Docker ensin komennolla:

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

Määritä sitten käyttäjä pi (olet kirjautunut sisään) pääsy Dockeriin, joten et saa kaikkia Docker-komentoja komennolla sudo on suoritettava:

sudo usermod pi -aG-telakointiasema

Kirjaudu ulos poistumalla ja kirjaudu sitten uudelleen. Nyt käyttäjä kuuluu pi ryhmälle satamatyöläinen.

03 Hei maailma

Sinun pitäisi nyt pystyä käynnistämään ensimmäinen Docker-säilö:

telakointiajo --rm hei-maailma

Tämä komento suorittaa Docker-kontin hei-maailma. Tämä säiliö näyttää ulostulossaan tarkalleen, mitä tapahtuu: kuvaa ei löydy Raspberry Pi -laitteestasi ja Docker lataa sen sitten Docker Hubista. Sitten Docker luo tämän kuvan perusteella säilön ja suorittaa siinä olevan ohjelman. Vaihtoehdolla -rm astia puhdistetaan ohjelman sulkemisen jälkeen. Tiedät nyt, että Docker on asennettu oikein ja toimii.

Hypriot

Asennamme Dockerin yksinkertaisesti Raspbianiin tähän perusopetusohjelmaan, mutta myös muut käyttöjärjestelmät ovat mahdollisia, jos olet kiinnostunut Dockerista Raspberry Pi: ssä. On Hypriot: Raspberry Pi -käyttöjärjestelmä, joka on optimoitu Dockerin käyttöön. Sinun tarvitsee vain asentaa tämä kuva Raspberry Pi: n micro-SD-kortille ja voit aloittaa Dockerin käytön heti. Hypriot on erityisen mielenkiintoinen, jos käytät vain Docker-säiliöitä Raspberry Pi -laitteellasi eikä mitään muuta.

04 Luo kontteja

Docker-konttien kanssa työskentelemisen perusta tehdään komennolla satamatyöläinen, kuten osoitimme edellisessä vaiheessa. Yleensä et halua ajaa konttia Dockerin kanssa ja sulkea sen välittömästi, mutta anna sen käydä. Joten emme käytä vaihtoehtoa --rm. Lisäksi haluat pitää kontin käynnissä taustalla ilman, että näet ulostuloa koko ajan näytöllä. Sitä vaihtoehto palvelee -d.

Jos aloitat kontin tällä tavalla, Docker antaisi sille satunnaisen nimen, josta ei ole hyötyä, jos sinulla on enemmän kuin kourallinen kontteja. Vaihtoehdolla --nimi NAME anna sen vuoksi kontille kiinteä nimi.

Sitten sinun on myös tarkasteltava verkkoyhteyksiä. Koska jokainen Docker-säilö on eristetty, et voi käyttää vain esimerkiksi verkkopalvelinta, joka toimii säilössä olevalla portilla 80. Siksi sinun on ohjeistettava Dockeria välittämään kaikki pyynnöt, esimerkiksi Raspberry Pi: n portista 8888 porttiin 80 tietyssä säiliössä. Teet sen vaihtoehdolla -p 8888: 80. Jos laitat kaikki nämä vaihtoehdot näytesäiliöön contous / whoami, suorita seuraava komento:

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

Jos kaikki menee hyvin, jonkin ajan kuluttua näet pitkän merkkijonon heksadesimaalisia numeroita (kuten 5122c935ce5178751a59699d2c5605c607700bd04e5f57a6c18de434ae53956e). Tämä on säilön tunnus. Jos surffaat kohteeseen // IP: 8888 kanssa sijasta IP Raspberry Pi: n IP-osoitteen avulla näet verkkopalvelimen luoman verkkosivun säiliössä.

05 Varo konttejasi

Kun olet käynnistänyt muutaman tällaisen kontin, hallinto alkaa tulla tärkeäksi. Ensinnäkin on hyödyllistä nähdä, mitkä kontit ovat käynnissä:

telakka ps

Sitten näet tietoja kaikista aktiivisista säilöistä (vaihtoehdon kanssa -a mukaan lukien pysäytetyt kontit). Ensimmäisessä sarakkeessa on jokaisen säilön yksilöllinen tunnus kuvan vieressä, josta säilö luotiin. Sarake TILA parhaiten tarkastella ongelmia. Esimerkiksi, jos säilösi käynnistyy uudelleen ongelmalla, näet sen täällä.

Sarakkeessa SATAMAT näet käytetyt portit. Esimerkiksi whoami on siellä konttimme edessä 0.0.0.0:8888->80/tcp. Tämä tarkoittaa, että Raspberry Pi: n TCP-portti 8888 ohjataan uudelleen säiliön TCP-porttiin 80. Viimeisessä sarakkeessa näkyy säilön nimi, jota voit käyttää muissa Docker-komennoissa.

Jos haluat lisätietoja, komento tulee telakointitilastot hyödyllinen. Sitten näet kunkin säiliön tilastot, kuten suorittimen, muistin ja verkon kulutuksen. Jos haluat kaikki tiedot, jotka Docker tietää tietystä säilöstä, suorita tämä komento ja säilön tunnus tai nimi:

telakka tarkastaa SÄILIÖ

Ja lopuksi, jos haluat tarkastella säilön lokeja, suorita toinen näistä kahdesta komennosta:

telakointilokit SÄILIÖ

telakointilokit -f SÄILIÖ

Vaihtoehdolla -f seuraat lokeja reaaliajassa, kun säilö luo ne.

06 Hallitse konttejasi ja kuvia

Jos haluat pysäyttää, käynnistää tai käynnistää käynnissä olevan säilön, voit tehdä sen helposti seuraavilla komennoilla:

telakointiasema CONTAINER

telakka käynnistää CONTAINER

telakointiasema käynnistä CONTAINER uudelleen

Jos haluat keskeyttää säilön väliaikaisesti (kaikki sen ohjelmat "tilapäisesti" jäädytetään "), suorita tämä komento:

telakka tauko CONTAINER

Tämän komennon jälkeen kaikki säilössä olevat ohjelmat suoritetaan uudelleen:

telakan unpause CONTAINER

Komennolla telakointikuvia näet luettelon kuvista, jotka Docker on ladannut. Sarakkeessa näkyy whoami-kontti Varasto teksti hillitsevä / whoami teline ja pylväs TAG osavaltio Viimeisin. Kuvan koko nimi olisi tarttuva / whoami: viimeisin ovat, mutta ne Viimeisin on tunnisteen oletusarvo, joten se voidaan jättää pois. Siksi käytämme kohdan 4 tehtävässä telakointiajo vain hillitsevä / whoami kuvana.

Sarakkeessa LUO näet kuinka kauan sitten tämä kuva ladattiin. Päivitä tämä kuva suorittamalla seuraava komento:

telakointiveto kontinen / whoami: viimeisin

Docker lataa sitten kuvan viimeisimmän version tai kertoo kuvan olevan ajan tasalla. Jos menet myöhemmin uudelleen telakointikuvia huomaat, että kuva on lisätty.

Mutta nykyinen whoami-säiliö käyttää silti vanhaa kuvaa. Päivitä tämä sulkemalla (telakka lopettaa whoami) ja poista (telakka rm wohami) luodaan säilö ja luot säiliön uudelleen osion 4 telakointikomennolla.

Siisti

Jos päivität Docker-kuvasi säännöllisesti suorittamaan uusimman version säilössä, vanhat kuvat säilyvät. Raspberry Pi: n mikro-SD-kortti, jonka kapasiteetti on korkeintaan muutama tusina gigatavua, voi siis täyttää nopeasti, varsinkin jos käytät suuria astioita. Esimerkiksi kontit, kuten Home Assistant ja Rhasspy, ovat kooltaan yli gigatavua. Nyt Docker toimii järjestelmän kanssa niin, että päivitys ei lataa ja tallenna täyttä gigatavua uudelleen, mutta monien päivitysten jälkeen vaadittu tallennustila kasvaa edelleen. Tehtävän kanssa docker rmi IMAGE_ID poistat kuvan komennon tulosteessa antamasi tunnuksen perusteella telakointikuvia löytää. Docker tietää myös komennon telakointikuvan karsiminen joka poistaa kaikki kuvat, joita säilö ei käytä. Kanssa telakointijärjestelmän karsiminen Poista myös pysäytetyt säilöt, verkot, joita vähintään yksi säilö ei käytä, ja välimuistitiedostot.

07 Niteet

Näytesäiliömme whoami ei käyttänyt mitään määritystietoja tai tietoja. Mutta voit jakaa Raspberry Pi -hakemistosi Docker-säilön kanssa, jotta se voi käyttää tietoja siitä. Docker kutsuu tällaista jaettua hakemistoa äänenvoimakkuudeksi.

Jos aiot työskennellä Raspberry Pi -laitteellasi useiden astioiden kanssa, on suositeltavaa, että laitat heidän hakemistonsa yhteen. Luo sille hakemisto esimerkiksi:

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

Aseta sitten kansioon säiliöt / nginx / data tiedosto index.html HTML-sivun kanssa.

Sitten voit nyt käynnistää nginx (verkkopalvelin) -säilön, jonka kanssa jaat tämän hakemiston:

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

Sitten säilö käynnistyy verkkopalvelimen kanssa ja kiinnittää hakemiston / home / pi / astiat / nging / data Raspberry Pi -laitteellasi paikassa olevassa astiassa / usr / share / nginx / html, vain lukuoikeudella (ro tarkoittaa vain luku -toimintoa). Jos surffaat kohteeseen IP: 8080 saat html-tiedoston index.html nähdä.

08 Docker-sävellys

Toistaiseksi olemme käynnistäneet manuaalisesti Docker-kontit komennolla telakointiajo. Mutta jos sinulla on vielä muutama Docker-säilö ja haluat muuttaa niiden kokoonpanoa säännöllisesti, on parempi lähestymistapa: sijoittaa kaikki yhteen kokoonpanotiedostoon. Se toimii Docker Composen kanssa.

Voit tehdä tämän asentamalla ensin Pythonin paketinhallinta-pipin ja sitten Docker Compose (joka on Python-ohjelma) seuraavilla komennoilla:

sudo apt asenna python3-pip

sudo pip3 asenna docker-compose

Nyt voit määrittää useita Docker-säilöjä yhteen tiedostoon docker-compose.yml laittaa. Voit tehdä tämän luomalla Docker Compose -tiedoston seuraavilla tavoilla:

nano docker-compose.yml

Laita seuraava kokoonpano esimerkkisäilöille whoami ja nginx:

versio: '3.7'

palvelut:

kuka olen:

kuva: saturous / whoami

container_name: whoami

uudelleenkäynnistys: aina

portit:

- 8888:80

nginx:

kuva: nginx

container_name: nginx

uudelleenkäynnistys: aina

portit:

- 8080:80

volyymit:

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

09 YAML

Tallenna tiedosto painamalla Ctrl + O ja sulje nano painamalla Ctrl + X. Tämä on YAML-tiedosto (laajennuksella .yml). YAML (tarkoittaa rekursiivista lyhennettä "YAML ei ole merkintäkieli") on tiedostomuoto määrittelemään kokoonpanotiedot luettavalla tavalla. Lisätietoja löytyy virallisilta verkkosivuilta.

Tästä tiedostosta näet, että määritämme kaksi säilöä palveluiksi. Kullekin säiliölle määritellään käytettävä kuva, nimi, joka säilölle tulisi antaa ja käynnistetäänkö säiliö uudelleen ongelmatilanteessa. Lisäksi määritämme myös uudelleenohjatut portit ja tilavuudet.

Kaikki nämä tiedot löytyvät myös komentoriviltä telakointiajo, mutta tässä Docker Compose -tiedostossa se on hieman järjestäytyneempi.

10 Työskentely Docker Compose -ohjelman kanssa

Kun saat tiedoston docker-compose.yml voit helposti luoda ja käynnistää siinä määritetyt säilöt:

telakka-säveltää ylös -d

Sen jälkeen voit hallita näitä kontteja telakointikomennolla, mutta itse telakointikomponentilla on myös paljon vaihtoehtoja erityisesti Docker Composella luomiesi säilöjen hallitsemiseksi. Joten siivoat kaiken seuraavalla komennolla, kaikki määritetyt säilöt pysäytetään ja poistetaan:

telakka-säveltää alas

Voit myös seurata kaikkien konttien lokeja seuraavasti:

telakka-säveltää lokit -f

Jokainen säilö näyttää lokiviestinsä eri väreillä. Docker Composella on myös tunnettu viritys kaikkien astioiden pysäyttämiseen, käynnistämiseen ja uudelleenkäynnistämiseen:

telakointiaseman pysäytys

telakointikomponentti alkaa

telakointikoneen uudelleenkäynnistys

Kaikkien Docker Compose -tiedoston säilöjen päivittäminen tapahtuu seuraavilla kahdella komennolla:

telakka-säveltää

telakointikoneen uudelleenkäynnistys

Ensimmäinen komento lataa uudet kuvat kaikille määrittelemillesi säilöille ja toinen komento käynnistää kaikki nämä säilöt uudelleen niin, että ne käyttävät uutta kuvaa. Sitten voit poistaa vanhat kuvat haluttaessa:

telakointikuvan karsiminen

11 Ja sen jälkeen

Löydät Docker-kuvia monista sovelluksista Docker Hubista. LinuxServer.io sisältää myös kymmeniä vapaaehtoisten ylläpitämiä Docker-kuvia. Nämä kuvat ovat hyvin hoidettuja ja dokumentoituja, ja ne kaikki käyttävät samanlaista lähestymistapaa ja perusinfrastruktuuria.

Yritä rajoittaa itsesi "virallisiin" Docker-kuviin, jotka tarjoaa projekti itse, tai luotettujen osapuolten kuviin, kuten LinuxServer.io. Koska periaatteessa kuka tahansa voi julkaista Docker-kuvia Docker Hubissa, mutta niitä ei aina pidetä ajan tasalla.

Oikea prosessoriarkkitehtuuri

On tärkeää, että lataat Docker-kuvat oikeaa prosessoriarkkitehtuuria varten. Raspberry Pi: ssä on ARM-prosessori, joka ei ole yhteensopiva tietokoneissa olevien Intel- tai AMD-prosessorien kanssa. Monet Docker-kuvat julkaistaan, jotta oikea versio ladataan automaattisesti suorittimen arkkitehtuurille. Docker Hubista löydät haluamasi Docker-kuvan sivulta tuetut arkkitehtuurit. Raspbianille tämä on arm32v7, arm / v7 tai armhf. Jos saat virheen exec-muotoinen virhe olet todennäköisesti ladannut kuvan väärästä prosessoriarkkitehtuurista. Jos näin tapahtuu, sinun on ladattava kuva eri tagilla. Esimerkiksi motionEye-projekti jakaa virallisen Docker-kuvansa kahdella mahdollisella tagilla: suoritat ccrisan / motioneye: master-amd64 Intel-yhteensopivissa prosessoreissa ja ccrisan / motioneye: päällikkö-armhf vadelma Pi: llä.

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