Vodnik po vsebnikih Linux: Uvod v vsebnike

Kontejnerji so že leta modna beseda... ampak kaj točno so?

Vsebniki so metoda izvajanja virtualiziranih aplikacij na vašem računalniku, podobna virtualnim strojem, vendar z uporabo drugačnega nabora osnovnih tehnologij. Lahko so zapleteni za razumevanje, vendar so bistveni za izvajanje vsega Minecraft strežnikov Googlu. In pokazali vam bomo, kako jih nastavite.

Uporabljali bomo Linux, operacijski sistem, zgrajen s poudarkom na prenosljivosti, modularnosti in stabilnosti. Linux je v vsem, od strežnikov do mikrovalovnih pečic do igralnih konzol. Vsebniki niso omejeni na delovanje v sistemu Linux, vendar so tehnologije, ki stojijo za njimi, najbolj primerne in delujejo v sistemu Linux. Če ste začetnik v Linuxu, vam priporočamo, da si ogledate naše vodnik za začetnike pred potopom.

Ali so kontejnerji virtualni stroji?

Vsebniki so lahko zapletena tema, vendar je najbolje začeti z eno ključno točko: vsebnik je ne virtualni stroj. Virtualni stroj je simulirana različica določene strojne opreme in njene programske opreme, ki deluje v tako imenovanem hipervizorju. Če ste kdaj uporabljali programsko opremo, kot je VirtualBox oz

multipass, potem ste uporabili hipervizor.

Hipervizor običajno deluje kot lasten operacijski sistem (znan kot hipervizor tipa 1) ali v mejah drugega operacijskega sistema, kot sta Windows ali Ubuntu (hipervizor tipa 2). Odgovornost hipervizorja je predstaviti gostujočemu operacijskemu sistemu simulirano strojno opremo, ki jo potrebuje za delovanje. Celoten operacijski sistem se lahko nato izvaja na vrhu. To vključuje vse od simuliranega procesorja in RAM-a do podatkovnih vodil, diskovnih pogonov ali omrežnih adapterjev. Ta simulacija je računsko draga, zato imajo virtualni stroji običajno precejšnje stroške.

Torej, kaj je vsebnik?

Vsebnik je podoben virtualnemu stroju, saj vsebuje in izvaja programsko opremo v izoliranem okolju v gostiteljskem sistemu. Vendar vsebniki nadomeščajo tradicionalno virtualizacijo strojne opreme, tako da se zanašajo neposredno na gostiteljski operacijski sistem. Vsebniki si delijo knjižnice in binarne datoteke gostiteljskega operacijskega sistema in imajo samo vire in odvisnosti, ki so potrebni za izvajanje določene aplikacije, ki jo vsebujejo. To pomeni, da ni potrebe po celotnem operacijskem sistemu na vsebnik, saj se vsi vsebniki izvajajo na sistem lahko deli operacijski sistem enega gostitelja, pri tem pa ohrani ločevanje, ki ga dobite z virtualnim stroji.

Vsebniki dostopajo do gostiteljskega operacijskega sistema prek vsebniškega mehanizma, ki upravlja tekoče vsebnike in nadzoruje njihov dostop do osnovnega operacijskega sistema. To lahko vključuje uveljavljanje varnosti med vsebniki in odobritev ali zavrnitev dostopa do datotek operacijskega sistema ali omrežnih povezav.

Kakšni so nekateri kompromisi pri uporabi vsebnikov?

Čeprav so virtualni stroji in vsebniki podobni, ima uporaba vsebnikov svoje pomanjkljivosti. Prvič, navidezni stroji veljajo za bolj varne, saj je napadalna površina za "pobeg" iz navideznega stroja bistveno manjša in jo je težje prodreti. Vsebnik morda na primer ni primeren za preizkušanje zlonamerne programske opreme.

Glavna prednost uporabe vsebnikov je, da so lahki, izogibanje potrebi po virtualizaciji celotnega operacijskega sistema pomeni minimalen čas zagona in zmanjšano obremenitev sistema. To pomeni, da lahko na enem gostitelju deluje veliko več vsebnikov, kar ne bi bilo mogoče z virtualnimi stroji.

Ker vsebniki ne potrebujejo celotnega operacijskega sistema, jih je mogoče preprosto zapakirati v manjše slike in distribuirati. Medtem ko je celotna slika navideznega stroja zlahka velika na desetine gigabajtov, so vsebniki lahko v slikah, velikih le 15 Kb. To omogoča izjemno enostavno distribucijo in uporabo posod. To bomo prikazali z izvajanjem nekaj preprostih primerov vsebnikov v Dockerju.

Namestitev Dockerja

To je veliko teorije, zato pojdimo na praktično. Da bi vam pokazali, kako nastavite vsebnik, bomo namestili Docker v Ubuntu 23.10 in ga uporabili za zagon preprostega vsebnika Hello World. Naši koraki so preizkušeni na virtualnem računalniku, lahko pa tudi dvojno zaženete računalnik z operacijskim sistemom Windows ali uporabite odličen prenosnik za Linux.

Docker je hitro postal de facto orodje za kontejnerizacijo. Medtem ko druga orodja obstajajo, je Docker široko razširjen in je kot nalašč za vse, razen za najzahtevnejše aplikacije. obstaja dokumentacijo o različnih načinih namestitve Dockerja, vendar bomo uporabili skript za priročno namestitev. Ta ukaz bo prenesel skript z get.docker.com na vaš lokalni računalnik:

$ curl -fsSL https://get.docker.com -o get-docker.sh

Nato lahko zaženete ta skript za namestitev Dockerja. Ali je Docker pravilno nameščen, lahko preverite tako, da preverite različico z:

$ sudo sh ./get-docker.sh

Sledi preverjanje različice z:

$ sudo docker version

Prav tako lahko preverite, ali storitev docker deluje v ozadju z:

$ sudo systemctl status docker

Z zelenim besedilom bi moralo biti označeno »aktivno (teče)«, kot je poudarjeno na spodnjem posnetku zaslona. Različica mehanizma Docker mora biti tudi natisnjena brez napak.

Izvajanje preprostega primera

Zdaj, ko je Docker nameščen, ga lahko uporabite za prenos slike vsebnika. Slike vsebnikov so zelo podobne ISO-jem za virtualne stroje, le da so običajno manjše in jih je lažje sestaviti. Prenesite preprosto sliko vsebnika hello-world z naslednjim ukazom:

$ sudo docker pull hello-world

Ko je ta slika prenesena, lahko to preverite tako, da navedete slike, prenesene v vaš sistem, z naslednjim:

$ sudo docker images

Zdaj bi morali videti prenos hello-world. Upoštevajte zelo majhno velikost (13 Kb na našem testnem stroju), pa tudi njegovo oznako. Oznaka slike je dejansko njena različica. Docker bo privzeto prenesel najnovejšo različico slike. Zaženite vsebnik na podlagi te slike z uporabo:

$ sudo docker run hello-world: latest

To bo ustvarilo Dockersov hello-world spiel, ki se izvaja iz zelo majhnega programa C (ki si ga lahko ogledate na GitHub).

čestitke; zagnali ste svoj prvi vsebnik! V tem primeru je program izdal svoj rezultat in zaključil z izvajanjem. Vsebnik je zdaj mrtev in ne deluje več.

Kako ohraniti zabojnike pri življenju

Ko smo zagnali osnovni vsebnik, lahko zdaj zgradimo bolj zapleten primer, ki se ne zapre takoj, ko konča nalogo. Vsebniki so pogosto zgrajeni okoli enega samega procesa, kar lahko povzroči več procesov. Ko se ta osnovni proces konča, bo z njim zapustil celoten vsebnik. To se morda sliši kot omejitev, vendar je v resnici zelo podobno delovanju init sistemov v polnem jedru Linuxa.

Za zagon vztrajnega primera lahko potegnemo sliko za Nginx, ki je spletni strežnik, ki se uporablja za gostovanje znatnega odstotka svetovnih spletnih mest. Za ta primer smo izbrali Nginx, ker je preprost, ne zahteva napredne konfiguracije in je lahek. Prenesite najnovejšo sliko Nginx z naslednjim ukazom:

$ sudo docker pull nginx

Dodali smo -str označite tukaj, da konfigurirate posredovanje vrat iz vsebnika v operacijski sistem gostitelja. Vrata 80 se uporabljajo za nešifriran HTTP (tj. spletni) promet. To vam bo omogočilo dostop do vsebnika iz vašega gostiteljskega računalnika:

$ sudo docker run -p 80:80 nginx

Ta ukaz se bo izvajal v vašem terminalu v priloženem načinu, kar pomeni, da je vsebnik dobesedno pritrjen na vaš terminal, tako da bodo vsi dnevniki iz vsebnika natisnjeni tam. Ko se posoda zažene, jo odprite http://localhost v vašem spletnem brskalniku. Videli boste pozdravni zaslon Nginx, podoben spodnjemu:

Vsebnik Nginx se zdaj izvaja v vašem motorju vsebnika. Čeprav Nginx deluje v priloženem načinu, bo deloval le, dokler bo odprt. Vsebnik Nginx lahko zapustite s pritiskom na Ctrl + C v vašem terminalu.

Kako zagnati vsebnike v ozadju

Za zagon Nginxa v ozadju bomo dodali še eno zastavico, -d, za samostojni način. To bo zagnalo vsebnik, ločen od vašega terminala, kar pomeni, da je v ozadju. Na primer:

$ sudo docker run -d -p 80:80 nginx

Navedete lahko vsebnike, ki se izvajajo v sistemu. Opazite, kako vaš vsebnik Nginx zdaj deluje v ozadju in mu je bil dodeljen ID.

$ sudo docker ps

Delujoči vsebnik v ozadju je mogoče uničiti z uporabo njegovega ID-ja. Morda boste opazili tudi, da je vsebnik dobil ime. Če ni določen, bo Docker vsakemu vsebniku dal naključno, edinstveno ime.

$ sudo docker kill 

Vendar pa bi to lahko preizkusili z nekaj bolj zanimivimi slikami. Veliko jih je na voljo na Docker hub, ki deluje kot osrednji repozitorij za slike javnih vsebnikov.

Potapljanje v globino s posodami

To je bil kratek uvod v vsebnike. Vsebniki so lahko neomejeno zapleteni, vendar so temeljni gradnik visoko porazdeljenih sistemov, ki poganjajo večino našega sodobnega interneta. Ta moč pa ne odvzame njihove uporabe v manjšem obsegu. Poznavanje osnov vsebnikov in Dockerja je lahko prehod do izvajanja uporabnih lokalnih storitev, kot je Minecraft strežnik ali Plex na starem računalniku.