Vodič za Linux spremnike: Uvod u spremnike

click fraud protection

Kontejneri su već godinama popularna riječ... ali što su oni točno?

Spremnici su metoda pokretanja virtualiziranih aplikacija na vašem računalu, slična virtualnim strojevima, ali koristeći drugačiji skup temeljnih tehnologija. Mogu biti složeni za razumijevanje, ali su ključni za pokretanje svega iz njih Minecraft poslužitelja Googleu. A mi ćemo vam pokazati kako ih postaviti.

Koristit ćemo Linux, operativni sustav izgrađen s fokusom na prenosivost, modularnost i stabilnost. Linux je prisutan u svemu, od poslužitelja preko mikrovalnih pećnica do konzola za video igre. Kontejneri nisu ograničeni na rad na Linuxu, ali tehnologije koje stoje iza njih najbolje su prilagođene i najbolje rade na Linuxu. Ako ste novi u Linuxu, preporučujemo da pogledate naš vodič za početnike prije ronjenja.

Jesu li spremnici virtualni strojevi?

Spremnici mogu biti složena tema, ali najbolje je započeti s jednom ključnom točkom: spremnik jest ne virtualni stroj. Virtualni stroj je simulirana verzija određenog hardvera i njegovog softvera koji radi u takozvanom hipervizoru. Ako ste ikada koristili softver poput VirtualBoxa ili

višeprolazni, onda ste koristili hipervizor.

Hipervizor obično radi ili kao vlastiti operativni sustav (poznat kao hipervizor tipa 1) ili unutar ograničenja drugog operativnog sustava poput Windowsa ili Ubuntua (hipervizor tipa 2). Odgovornost hipervizora je predstaviti gostujućem operativnom sustavu simulirani hardver koji mu je potreban za rad. Cijeli operativni sustav tada može raditi na vrhu. To uključuje sve, od simuliranog CPU-a i RAM-a do podatkovnih sabirnica, diskova ili mrežnih adaptera. Ova je simulacija računalno skupa, tako da virtualni strojevi obično imaju značajne troškove.

Dakle, što je spremnik?

Kontejner je sličan virtualnom stroju po tome što sadrži i pokreće softver u izoliranom okruženju na glavnom sustavu. Međutim, spremnici zamjenjuju tradicionalnu hardversku virtualizaciju oslanjajući se izravno na glavni operativni sustav. Kontejneri dijele biblioteke i binarne datoteke glavnog operativnog sustava i imaju samo resurse i ovisnosti potrebne za pokretanje određene aplikacije koju sadrže. To znači da nema potrebe za punim operativnim sustavom po spremniku, budući da svi spremnici rade na sustav može dijeliti operativni sustav s jednim hostom zadržavajući segregaciju koju dobivate s virtualnim strojevi.

Kontejneri pristupaju glavnom operativnom sustavu putem pogona spremnika koji upravlja spremnicima koji rade i kontrolira njihov pristup temeljnom operativnom sustavu. To može uključivati ​​provođenje sigurnosti između spremnika i odobravanje ili zabranjivanje pristupa datotekama operativnog sustava ili mrežnim vezama.

Koji su neki kompromisi za korištenje spremnika?

Iako su virtualni strojevi i spremnici slični, korištenje spremnika ima svoje nedostatke. Kao prvo, virtualni strojevi smatraju se sigurnijima, budući da je površina napada za "bijeg" virtualnog stroja znatno manja i teže ju je probiti. Na primjer, spremnik možda nije prikladan za testiranje zlonamjernog softvera.

Glavna prednost korištenja spremnika je ta što su lagani, izbjegavanje potrebe za virtualizacijom cijelog operativnog sustava znači minimalno vrijeme pokretanja i smanjenje opterećenja sustava. To znači da mnogo više spremnika može raditi na jednom hostu, što ne bi bilo moguće s virtualnim strojevima.

Budući da spremnici ne zahtijevaju puni operativni sustav, lako se mogu pakirati u manje slike i distribuirati. Dok puna slika virtualnog stroja lako može imati desetke gigabajta, spremnici mogu biti u slikama od samo 15Kb. To čini iznimno lakim distribuciju i korištenje spremnika. To ćemo pokazati pokretanjem nekih jednostavnih primjera spremnika u Dockeru.

Instaliranje Dockera

To je puno teorije, pa prijeđimo na praksu. Da bismo vam pokazali kako postaviti spremnik, instalirat ćemo Docker u Ubuntu 23.10 i koristiti ga za pokretanje jednostavnog spremnika Hello World. Naši su koraci testirani na virtualnom stroju, ali također se možete dvostruko pokrenuti sa svog Windows računala ili koristiti a odličan laptop za Linux.

Docker je brzo postao de facto alat za kontejnerizaciju. Dok drugi alati postoje, Docker je široko prihvaćen i savršen je za sve osim najzahtjevnijih aplikacija. Postoji dokumentaciju o različitim načinima instaliranja Dockera, ali koristit ćemo skriptu za praktičnu instalaciju. Ova naredba će preuzeti skriptu s get.docker.com na vaš lokalni stroj:

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

Zatim možete pokrenuti ovu skriptu da instalirate Docker. Možete provjeriti je li Docker ispravno instaliran provjerom verzije pomoću:

$ sudo sh ./get-docker.sh

Nakon toga slijedi provjera verzije s:

$ sudo docker version

Također možete provjeriti radi li docker usluga u pozadini pomoću:

$ sudo systemctl status docker

Trebalo bi označavati 'aktivno (u tijeku)' zelenim tekstom, kao što je istaknuto na snimci zaslona u nastavku. Verzija Docker motora također bi trebala biti ispisana bez greške.

Izvođenje jednostavnog primjera

Sada kada je Docker instaliran, možete ga koristiti za preuzimanje slike spremnika. Slike spremnika uvelike su slične ISO-ima za virtualne strojeve, osim što su obično manje i lakše ih je izraditi. Preuzmite jednostavnu sliku spremnika hello-world pomoću sljedeće naredbe:

$ sudo docker pull hello-world

Nakon što se ta slika preuzme, možete je potvrditi popisom slika preuzetih na vašem sustavu pomoću sljedećeg:

$ sudo docker images

Sada biste trebali vidjeti preuzet hello-world. Imajte na umu vrlo malu veličinu (13 Kb na našem testnom stroju), kao i njegovu oznaku. Oznaka slike zapravo je njezina verzija. Prema zadanim postavkama, Docker će preuzeti najnoviju verziju slike. Pokrenite spremnik na temelju ove slike koristeći:

$ sudo docker run hello-world: latest

Ovo će ispisati Dockersov hello-world govor, koji se pokreće iz vrlo malog C programa (koji možete provjeriti na GitHub).

Čestitamo; pokrenuli ste svoj prvi kontejner! U ovom slučaju, program je objavio svoj rezultat i završio svoje izvršenje. Spremnik je sada mrtav i više ne radi.

Kako održati kontejnere na životu

Nakon što smo pokrenuli osnovni spremnik, sada možemo izgraditi složeniji primjer koji se ne zatvara odmah nakon što dovrši zadatak. Spremnici se često grade oko jednog procesa, što može proizvesti više procesa. Nakon što ovaj osnovni proces izađe, cijeli spremnik će izaći s njim. Ovo bi moglo zvučati kao ograničenje, ali zapravo je vrlo slično načinu na koji funkcioniraju init sustavi u punoj jezgri Linuxa.

Da bismo pokrenuli trajni primjer, možemo povući sliku za Nginx, koji je web poslužitelj koji se koristi za hostiranje značajnog postotka svjetskih web stranica. Odabrali smo Nginx za ovaj primjer jer je jednostavan, ne zahtijeva naprednu konfiguraciju i lagan je. Preuzmite najnoviju Nginx sliku sljedećom naredbom:

$ sudo docker pull nginx

Dodali smo -str označite ovdje za konfiguraciju prosljeđivanja porta iz spremnika u glavni operativni sustav. Port 80 koristi se za nekriptirani HTTP (tj. web) promet. To će vam omogućiti pristup spremniku s vašeg glavnog računala:

$ sudo docker run -p 80:80 nginx

Ova naredba će se pokrenuti na vašem terminalu u priloženom načinu rada što znači da je spremnik doslovno spojen na vaš terminal, tako da će svi zapisnici iz spremnika biti tamo ispisani. Nakon što se spremnik pokrene, otvorite ga http://localhost u vašem web pregledniku. Vidjet ćete Nginxov zaslon dobrodošlice sličan donjem:

Nginx spremnik sada radi unutar vašeg spremnika. Dok Nginx radi u priključenom načinu rada, nastavit će raditi samo dok je otvoren. Možete izaći iz Nginx spremnika pritiskom na Ctrl + C u vašem terminalu.

Kako pokrenuti spremnike u pozadini

Za pokretanje Nginxa u pozadini, dodat ćemo još jednu zastavicu, -d, za odvojeni način rada. Ovo će pokrenuti spremnik odvojen od vašeg terminala, što znači da je u pozadini. Na primjer:

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

Možete ispisati pokrenute spremnike na sustavu. Primijetite kako vaš Nginx spremnik sada radi u pozadini i dodijeljen mu je ID.

$ sudo docker ps

Pokrenuti pozadinski spremnik može se uništiti pomoću njegovog ID-a. Također možete primijetiti da je spremnik dobio ime. Kada nije naveden, Docker će svakom spremniku dati nasumično, jedinstveno ime.

$ sudo docker kill 

Međutim, ovo možete isprobati s nekim zanimljivijim slikama. Postoji mnogo dostupnih na Docker čvorište, koji funkcionira kao središnje spremište slika javnih spremnika.

Dublje ronjenje s kontejnerima

Ovo je bio kratki uvod u spremnike. Kontejneri mogu biti neograničeno složeni, ali oni su temeljni građevni blok visoko distribuiranih sustava koji pokreću veći dio našeg modernog interneta. Ipak, ta moć ne oduzima njihovu upotrebu u manjem opsegu. Poznavanje osnova kontejnera i Dockera može biti pristup pokretanju korisnih lokalnih usluga poput Minecraft server ili Plex na starom računalu.