Sprievodca kontajnermi pre Linux: Úvod do kontajnerov

click fraud protection

Kontajnery sú už roky módnym slovom... ale čo to vlastne sú?

Kontajnery predstavujú spôsob spúšťania virtualizovaných aplikácií na vašom počítači, podobne ako virtuálne stroje, ale využívajúci inú sadu základných technológií. Môžu byť zložité na pochopenie, ale sú nevyhnutné na spustenie všetkého Minecraft servery spoločnosti Google. A my vám ukážeme, ako ich nastaviť.

Budeme používať Linux, operačný systém vytvorený so zameraním na prenosnosť, modularitu a stabilitu. Linux je vo všetkom, od serverov cez mikrovlnky až po videoherné konzoly. Kontajnery sa neobmedzujú len na beh na Linuxe, ale technológie za nimi sú najvhodnejšie a najlepšie fungujú na Linuxe. Ak s Linuxom začínate, odporúčame vám pozrieť si naše sprievodca pre začiatočníkov pred ponorením sa.

Sú kontajnery virtuálne stroje?

Kontajnery môžu byť zložitou témou, ale najlepšie je začať s jedným kľúčovým bodom: kontajner je nie virtuálny stroj. Virtuálny stroj je simulovaná verzia špecifického hardvéru a jeho softvéru, ktorý beží v takzvanom hypervízore. Ak ste niekedy používali softvér ako VirtualBox alebo

viacpriechodový, potom ste použili hypervízor.

Hypervízor zvyčajne beží buď ako vlastný operačný systém (známy ako hypervízor typu 1) alebo v rámci iného operačného systému, ako je Windows alebo Ubuntu (hypervízor typu 2). Zodpovednosťou hypervízora je predstaviť hosťujúcemu operačnému systému simulovaný hardvér, ktorý potrebuje na spustenie. Navrchu potom môže bežať celý operačný systém. To zahŕňa všetko od simulovaného CPU a RAM až po dátové zbernice, diskové jednotky alebo sieťové adaptéry. Táto simulácia je výpočtovo nákladná, takže virtuálne stroje majú zvyčajne značnú réžiu.

Takže, čo je kontajner?

Kontajner je podobný virtuálnemu stroju v tom, že obsahuje a spúšťa softvér v izolovanom prostredí na hostiteľskom systéme. Kontajnery však nahrádzajú tradičnú hardvérovú virtualizáciu tým, že sa spoliehajú priamo na hostiteľský operačný systém. Kontajnery zdieľajú knižnice a binárne súbory hostiteľského operačného systému a majú iba prostriedky a závislosti potrebné na spustenie konkrétnej aplikácie, ktorú obsahujú. To znamená, že nie je potrebný úplný operačný systém na kontajner, pretože všetky kontajnery bežia na a systém môže zdieľať operačný systém s jedným hostiteľom pri zachovaní segregácie, ktorú získate s virtuálnym stroje.

Kontajnery pristupujú k hostiteľskému operačnému systému prostredníctvom nástroja kontajnerov, ktorý spravuje spustené kontajnery a riadi ich prístup k základnému operačnému systému. Môže to zahŕňať vynútenie bezpečnosti medzi kontajnermi a udelenie alebo odmietnutie prístupu k súborom operačného systému alebo sieťovým pripojeniam.

Aké sú niektoré kompromisy pri používaní kontajnerov?

Zatiaľ čo virtuálne stroje a kontajnery sú podobné, používanie kontajnerov má svoje nevýhody. Po prvé, virtuálne stroje sa považujú za bezpečnejšie, pretože útočná plocha na „únik“ z virtuálneho stroja je podstatne menšia a ťažšie sa do nej preniká. Kontajner nemusí byť vhodný napríklad na testovanie škodlivého softvéru.

Hlavnou výhodou použitia kontajnerov je, že sú ľahké, takže nie je potrebné virtualizovať celý operačný systém, čo znamená minimálne časy spustenia a zníženú réžiu systému. To znamená, že na jednom hostiteľovi môže bežať oveľa viac kontajnerov, čo by s virtuálnymi strojmi nebolo možné.

Pretože kontajnery nevyžadujú úplný operačný systém, možno ich jednoducho zabaliť do menších obrázkov a distribuovať. Zatiaľ čo úplný obraz virtuálneho stroja môže mať ľahko desiatky gigabajtov, kontajnery môžu mať obrazy len 15 kb. Vďaka tomu je veľmi jednoduché distribuovať a používať nádoby. Ukážeme to spustením niekoľkých jednoduchých príkladov kontajnerov v Dockeri.

Inštaluje sa Docker

To je veľa teórie, tak poďme do praxe. Aby sme vám ukázali, ako nastaviť kontajner, nainštalujeme Docker v Ubuntu 23.10 a použijeme ho na spustenie jednoduchého kontajnera Hello World. Naše kroky sú testované na virtuálnom počítači, ale môžete tiež spustiť duálne spustenie z počítača so systémom Windows alebo použiť a skvelý notebook pre Linux.

Docker sa rýchlo stal de-facto kontajnerizačným nástrojom. Zatiaľ čo iné nástroje existujú, Docker je široko používaný a je ideálny pre všetky okrem tých najnáročnejších aplikácií. existuje dokumentáciu o rôznych spôsoboch inštalácie Docker, ale budeme používať pohodlný inštalačný skript. Tento príkaz stiahne skript z get.docker.com do vášho lokálneho počítača:

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

Potom môžete spustiť tento skript a nainštalovať Docker. Správnu inštaláciu Dockeru môžete overiť kontrolou verzie pomocou:

$ sudo sh ./get-docker.sh

Nasleduje kontrola verzie pomocou:

$ sudo docker version

Môžete tiež overiť, či služba docker beží na pozadí:

$ sudo systemctl status docker

Zeleným textom by malo byť označené „aktívne (spustené)“, ako je zvýraznené na snímke obrazovky nižšie. Verzia motora Docker by sa tiež mala vytlačiť bez chýb.

Spustenie jednoduchého príkladu

Teraz, keď je Docker nainštalovaný, môžete ho použiť na stiahnutie obrazu kontajnera. Obrazy kontajnerov sú veľmi podobné ISO pre virtuálne stroje, okrem toho, že sú zvyčajne menšie a ľahšie zostaviteľné. Stiahnite si jednoduchý obrázok kontajnera hello-world pomocou nasledujúceho príkazu:

$ sudo docker pull hello-world

Po stiahnutí tohto obrázka ho môžete overiť uvedením obrázkov stiahnutých do vášho systému pomocou nasledujúceho postupu:

$ sudo docker images

Teraz by ste mali vidieť stiahnutý hello-world. Všimnite si veľmi malú veľkosť (13 kB na našom testovacom zariadení), ako aj jeho značku. Značka obrázka je v skutočnosti jeho verziou. V predvolenom nastavení Docker stiahne najnovšiu verziu obrázka. Spustite kontajner založený na tomto obrázku pomocou:

$ sudo docker run hello-world: latest

Tým sa spustí Dockers' hello-world spiel, ktorý beží z veľmi malého programu C (ktorý si môžete vyskúšať na GitHub).

Gratulujeme; spustili ste svoj prvý kontajner! V tomto prípade program vypísal svoj výsledok a dokončil svoje vykonávanie. Kontajner je teraz mŕtvy a už nefunguje.

Ako udržať kontajnery pri živote

Po spustení základného kontajnera môžeme teraz vytvoriť zložitejší príklad, ktorý sa po dokončení úlohy okamžite neskončí. Kontajnery sú často postavené okolo jedného procesu, ktorý môže vyvolať viac procesov. Akonáhle tento základný proces skončí, opustí sa s ním aj celý kontajner. Môže to znieť ako obmedzenie, ale v skutočnosti je to veľmi podobné inicializácii systémov v úplnom kerneli Linuxu.

Ak chcete spustiť trvalý príklad, môžeme stiahnuť obrázok pre Nginx, čo je webový server, ktorý sa používa na hosťovanie významného percenta svetových webových stránok. Pre tento príklad sme vybrali Nginx, pretože je jednoduchý, nevyžaduje pokročilú konfiguráciu a je ľahký. Stiahnite si najnovší obrázok Nginx pomocou nasledujúceho príkazu:

$ sudo docker pull nginx

Pridali sme -p tu nakonfigurujete presmerovanie portov z kontajnera do hostiteľského operačného systému. Port 80 sa používa na nešifrovaný prenos HTTP (t. j. web). To vám umožní prístup ku kontajneru z vášho hostiteľského počítača:

$ sudo docker run -p 80:80 nginx

Tento príkaz sa spustí vo vašom termináli v pripojenom režime, čo znamená, že kontajner je doslova pripojený k vášmu terminálu, takže tam budú vytlačené všetky protokoly z kontajnera. Po spustení nádoby otvorte http://localhost vo vašom webovom prehliadači. Uvidíte uvítaciu obrazovku Nginx podobnú nižšie:

Kontajner Nginx teraz beží vo vašom kontajnerovom motore. Zatiaľ čo Nginx beží v pripojenom režime, bude pokračovať iba dovtedy, kým bude otvorený. Kontajner Nginx môžete opustiť stlačením Ctrl + C vo vašom termináli.

Ako spustiť kontajnery na pozadí

Ak chcete spustiť Nginx na pozadí, pridáme ďalší príznak, -d, pre oddelený režim. Tým sa kontajner odpojí od vášho terminálu, čo znamená, že je na pozadí. Napríklad:

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

Môžete uviesť zoznam spustených kontajnerov v systéme. Všimnite si, ako váš kontajner Nginx teraz beží na pozadí a má priradené ID.

$ sudo docker ps

Spustený kontajner na pozadí možno zabiť pomocou jeho ID. Môžete si tiež všimnúť, že kontajner dostal názov. Ak nie je zadaný, Docker pridelí každému kontajneru náhodný, jedinečný názov.

$ sudo docker kill 

Môžete to však otestovať na niektorých zaujímavejších obrázkoch. K dispozícii je toho veľa na Docker hub, ktorý funguje ako centrálne úložisko pre obrázky verejných kontajnerov.

Potápanie hlbšie s nádobami

Toto bol krátky úvod do kontajnerov. Kontajnery môžu byť nekonečne zložité, ale sú základným stavebným kameňom vysoko distribuovaných systémov, ktoré prevádzkujú veľkú časť nášho moderného internetu. Táto sila však neuberá z ich používania v menšom meradle. Znalosť základov kontajnerov a Docker môže byť vstupnou bránou k prevádzke užitočných miestnych služieb, ako napr Minecraft server alebo Plex na starom PC.