Linux konteineru ceļvedis: ievads konteineros

click fraud protection

Konteineri jau gadiem ilgi ir populārs vārds... bet kas tie īsti ir?

Konteineri ir metode virtualizētu lietojumprogrammu palaišanai datorā, līdzīgi kā virtuālajās mašīnās, bet izmantojot citu pamatā esošo tehnoloģiju kopu. Tos var būt sarežģīti saprast, taču tie ir būtiski, lai no tiem varētu darboties Minecraft serverus Google. Un mēs jums parādīsim, kā tos iestatīt.

Mēs izmantosim Linux — operētājsistēmu, kas izveidota, koncentrējoties uz pārnesamību, modularitāti un stabilitāti. Linux ir pieejams visās jomās, sākot no serveriem līdz mikroviļņu krāsnīm un beidzot ar videospēļu konsolēm. Konteineri darbojas ne tikai operētājsistēmā Linux, bet to pamatā esošās tehnoloģijas ir vispiemērotākās un vislabāk darbojas operētājsistēmā Linux. Ja esat iesācējs Linux, iesakām iepazīties ar mūsu iesācēja rokasgrāmata pirms niršanas.

Vai konteineri ir virtuālās mašīnas?

Konteineri var būt sarežģīta tēma, taču vislabāk ir sākt ar vienu galveno punktu: konteiners ir virtuālā mašīna. Virtuālā mašīna ir noteiktas aparatūras un tās programmatūras simulēta versija, kas darbojas tā sauktajā hipervizorā. Ja kādreiz esat izmantojis tādu programmatūru kā VirtualBox vai

multipass, tad esat izmantojis hipervizoru.

Hipervizors parasti darbojas vai nu kā sava operētājsistēma (pazīstama kā 1. tipa hipervizors), vai arī citas operētājsistēmas, piemēram, Windows vai Ubuntu (2. tipa hipervizora) ietvaros. Hipervizora pienākums ir iepazīstināt viesu operētājsistēmu ar simulēto aparatūru, kas tai nepieciešama, lai tā darbotos. Pēc tam var darboties pilna operētājsistēma. Tas ietver visu, sākot no simulēta CPU un RAM līdz datu kopnēm, diskdziņiem vai tīkla adapteriem. Šī simulācija ir skaitļošanas ziņā dārga, tāpēc virtuālajām mašīnām parasti ir ievērojamas pieskaitāmās izmaksas.

Tātad, kas ir konteiners?

Konteiners ir līdzīgs virtuālajai mašīnai, jo tajā ir programmatūra un tā darbojas izolētā vidē resursdatora sistēmā. Tomēr konteineri aizstāj tradicionālo aparatūras virtualizāciju, tieši paļaujoties uz resursdatora operētājsistēmu. Konteineri koplieto resursdatora operētājsistēmas bibliotēkas un bināros failus, un tiem ir tikai tie resursi un atkarības, kas nepieciešami, lai palaistu konkrēto tajos ietverto lietojumprogrammu. Tas nozīmē, ka vienam konteineram nav nepieciešama pilna operētājsistēma, jo visi konteineri, kas darbojas uz a sistēma var koplietot viena resursdatora operētājsistēmu, vienlaikus saglabājot segregāciju, ko iegūstat ar virtuālo mašīnas.

Konteineri piekļūst resursdatora operētājsistēmai, izmantojot konteineru dzinēju, kas pārvalda darbojošos konteinerus un kontrolē to piekļuvi pamatā esošajai operētājsistēmai. Tas var ietvert drošības ieviešanu starp konteineriem un piekļuves piešķiršanu vai liegšanu operētājsistēmas failiem vai tīkla savienojumiem.

Kādi ir kompromisi, izmantojot konteinerus?

Lai gan virtuālās mašīnas un konteineri ir līdzīgi, konteineru izmantošanai ir savi trūkumi. Pirmkārt, virtuālās mašīnas tiek uzskatītas par drošākām, jo ​​uzbrukuma virsma, lai "aizbēgtu" no virtuālās mašīnas, ir ievērojami mazāka un grūtāk caur to iekļūt. Konteiners var nebūt piemērots, piemēram, ļaunprātīgas programmatūras pārbaudei.

Lielākais konteineru izmantošanas ieguvums ir tas, ka tie ir viegli, tādēļ, lai izvairītos no nepieciešamības virtualizēt visu operētājsistēmu, tas nozīmē minimālu palaišanas laiku un samazinātu sistēmas izmaksas. Tas nozīmē, ka vienā resursdatorā var darboties daudz vairāk konteineru, kas nebūtu iespējams ar virtuālajām mašīnām.

Tā kā konteineriem nav nepieciešama pilna operētājsistēma, tos var viegli iesaiņot mazākos attēlos un izplatīt. Lai gan pilns virtuālās mašīnas attēls var būt desmitiem gigabaitu, konteineros var būt pat 15 Kb lieli attēli. Tas padara konteineru izplatīšanu un lietošanu ārkārtīgi vienkāršu. Mēs to parādīsim, palaižot dažus vienkāršus konteineru piemērus programmā Docker.

Docker instalēšana

Tajā ir daudz teorijas, tāpēc pievērsīsimies praktiskai. Lai parādītu, kā iestatīt konteineru, mēs instalēsim Docker Ubuntu 23.10 un izmantosim to, lai palaistu vienkāršu Hello World konteineru. Mūsu darbības tiek pārbaudītas virtuālajā mašīnā, taču jūs varat arī veikt dubultu sāknēšanu no sava Windows datora vai izmantot a lielisks klēpjdators priekš Linux.

Docker ir strauji kļuvis par de facto konteinerizācijas rīku. Lai gan pastāv citi rīki, Docker tiek plaši izmantots un ir lieliski piemērots visām lietojumprogrammām, izņemot visprasīgākās. Tur ir dokumentācija par dažādiem Docker instalēšanas veidiem, bet mēs izmantosim ērtas instalēšanas skriptu. Šī komanda lejupielādēs skriptu no get.docker.com jūsu vietējā datorā:

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

Pēc tam varat palaist šo skriptu, lai instalētu Docker. Varat pārbaudīt, vai Docker ir instalēts pareizi, pārbaudot versiju, izmantojot:

$ sudo sh ./get-docker.sh

Seko versijas pārbaude ar:

$ sudo docker version

Varat arī pārbaudīt, vai doka pakalpojums darbojas fonā, izmantojot:

$ sudo systemctl status docker

Tam ir jānorāda “aktīvs (darbojas)” zaļā tekstā, kā norādīts tālāk esošajā ekrānuzņēmumā. Arī Docker dzinēja versija ir jādrukā bez kļūdām.

Izpildot vienkāršu piemēru

Tagad, kad Docker ir instalēts, varat to izmantot, lai lejupielādētu konteinera attēlu. Konteineru attēli ir ļoti līdzīgi virtuālo mašīnu ISO, taču parasti tie ir mazāki un vieglāk izveidojami. Lejupielādējiet vienkāršu hello-world konteinera attēlu ar šādu komandu:

$ sudo docker pull hello-world

Kad attēls ir lejupielādēts, varat to pārbaudīt, uzskaitot sistēmā lejupielādētos attēlus, izmantojot tālāk norādītās darbības.

$ sudo docker images

Tagad jums vajadzētu redzēt, ka hello-world ir lejupielādēts. Ņemiet vērā ļoti mazo izmēru (13 Kb mūsu testa iekārtā), kā arī tā atzīmi. Attēla atzīme faktiski ir tā versija. Pēc noklusējuma Docker lejupielādēs jaunāko attēla versiju. Palaidiet konteineru, pamatojoties uz šo attēlu, izmantojot:

$ sudo docker run hello-world: latest

Tas izvadīs Dockers hello-world spēli, kas darbojas no ļoti mazas C programmas (kuru varat pārbaudīt GitHub).

Apsveicam; esat palaidis savu pirmo konteineru! Šajā gadījumā programma ir izvadījusi rezultātu un pabeigusi izpildi. Tagad konteiners ir miris un vairs nedarbojas.

Kā saglabāt konteinerus dzīvus

Pēc pamata konteinera palaišanas mēs tagad varam izveidot sarežģītāku piemēru, kas netiek nekavējoties iziets pēc uzdevuma pabeigšanas. Konteineri bieži tiek veidoti, izmantojot vienu procesu, kas var izraisīt vairāk procesu. Kad šis pamatprocess beigsies, viss konteiners iziet kopā ar to. Tas varētu izklausīties kā ierobežojums, taču patiesībā tas ir ļoti līdzīgs tam, kā sistēmas init pilnā Linux kodola funkcijā.

Lai rādītu pastāvīgu piemēru, mēs varam izveidot attēlu Nginx, kas ir tīmekļa serveris, ko izmanto, lai mitinātu ievērojamu daļu pasaules vietņu. Šim piemēram esam izvēlējušies Nginx, jo tas ir vienkāršs, neprasa papildu konfigurāciju un ir viegls. Lejupielādējiet jaunāko Nginx attēlu ar šādu komandu:

$ sudo docker pull nginx

Mēs esam pievienojuši -lpp atzīmējiet šeit, lai konfigurētu portu pārsūtīšanu no konteinera uz resursdatora operētājsistēmu. Ports 80 tiek izmantots nešifrētai HTTP (t.i., tīmekļa) trafikam. Tas ļaus jums piekļūt konteineram no resursdatora:

$ sudo docker run -p 80:80 nginx

Šī komanda darbosies jūsu terminālī pievienotajā režīmā, kas nozīmē, ka konteiners ir burtiski pievienots jūsu terminālim, tāpēc visi konteinera žurnāli tiks izdrukāti tur. Kad tvertne ir iedarbināta, atveriet http://localhost savā tīmekļa pārlūkprogrammā. Jūs redzēsit Nginx sveiciena ekrānu, kas līdzīgs tālāk norādītajam:

Nginx konteiners tagad darbojas jūsu konteinera dzinējā. Kamēr Nginx darbojas pievienotajā režīmā, tas turpinās darboties tikai tik ilgi, kamēr tas būs atvērts. Jūs varat iziet no Nginx konteinera, nospiežot Ctrl+C savā terminālī.

Kā palaist konteinerus fonā

Lai palaistu Nginx fonā, mēs pievienosim vēl vienu karogu, -d, atdalītajam režīmam. Tādējādi tiks palaists konteiners, kas ir atdalīts no jūsu termināļa, kas nozīmē, ka tas atrodas fonā. Piemēram:

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

Varat uzskaitīt sistēmā darbojošos konteinerus. Ievērojiet, kā jūsu Nginx konteiners tagad darbojas fonā un tam ir piešķirts ID.

$ sudo docker ps

Darbojošu fona konteineru var iznīcināt, izmantojot tā ID. Varat arī pamanīt, ka konteineram ir piešķirts nosaukums. Ja tas nav norādīts, Docker katram konteineram piešķirs nejaušu, unikālu nosaukumu.

$ sudo docker kill 

Tomēr jūs varētu to pārbaudīt ar dažiem interesantākiem attēliem. Vietnē ir daudz pieejamu Docker centrs, kas darbojas kā publiskā konteinera attēlu centrālā krātuve.

Niršana dziļāk ar konteineriem

Šis ir īss ievads konteineros. Konteineri var būt neierobežoti sarežģīti, taču tie ir pamatelements augsti izplatītām sistēmām, kas izmanto lielāko daļu mūsu modernā interneta. Tomēr šī jauda neatņem to izmantošanu mazākā mērogā. Iepazīšanās ar konteineru un Docker pamatiem var būt vārti uz noderīgu vietējo pakalpojumu, piemēram, Minecraft serveris vai Plex vecā datorā.