Writing
Čo sú to kontajnery?
Úvod do kontajnerov, Linux cgroups, menných priestorov a modernej kontajnerizácie.
Table of Contents
- Kontajner je technológia na zabalenie aplikácií a ich závislostí a ich spúšťanie v izolovanom prostredí.
Hlavným cieľom kontajnerizácie je ponúknuť lepší spôsob vytvárania, balenia a nasadzovania softvéru v rôznych prostrediach predvídateľným a ľahko spravovateľným spôsobom.
Čo sú to kontajnery?
Kontajnery predstavujú virtualizačnú technológiu na úrovni operačného systému, ktorá sa používa na balenie aplikácií a ich závislostí a ich spúšťanie v izolovaných prostrediach. Poskytujú ľahkú metódu štandardizovaného nasadzovania aplikácií naprieč rôznymi typmi infraštruktúry.
Linux cgroups a Namespaces (menné priestory)
Jadro Linuxu disponuje funkciami, ktoré to umožňujú. Kontrolné skupiny Linuxu (cgroups) sú funkciou jadra, ktorá umožňuje zoskupovať, izolovať a spravovať procesy a ich systémové zdroje ako celok. cgroups určujú, k akým zdrojom majú procesy prístup, a umožňujú monitorovanie ich správania.
Druhou kľúčovou funkciou jadra sú menné priestory (namespaces). Menné priestory obmedzujú to, čo môžu procesy vidieť zo zvyšku systému. Procesy bežiace v mennom priestore nevidia nič mimo svojho priestoru. Vnútri menného priestoru sa hlavný proces stáva PID 1, vďaka čomu sa procesy v kontajneri správajú, akoby bežali v bežnom samostatnom operačnom systéme.
Ľahká virtualizácia
V porovnaní s hardvérovou virtualizáciou pomocou virtuálnych strojov (VM) sú kontajnery mimoriadne ľahké. Namiesto virtualizácie hardvéru a behu celého samostatného OS využívajú kontajnery jadro hostiteľa a bežia ako oddelené procesy.
Z pohľadu hostiteľa bežia kontajnery ako bežné procesy – rýchlo štartujú a spotrebúvajú minimum zdrojov. Samotné obrazy kontajnerov môžu byť veľmi malé, čo umožňuje rýchle sťahovanie najnovších verzií bez zbytočného zdržania.
Izolácia prostredia
Vďaka cgroups a menným priestorom sú kontajnery izolované od hostiteľa aj od seba navzájom. Predchádza sa tým konfliktom knižníc a portov, keďže každý kontajner spravuje softvér v oddelenom súborovom a sieťovom systéme.
Štandardizovaný formát balenia a cieľové prostredie
Obrazy kontajnerov umožňujú zabaliť aplikáciu a všetky jej runtime požiadavky do jedinej jednotky, ktorú možno nasadiť na akejkoľvek infraštruktúre. Pokiaľ je runtime funkčný, kontajner beží rovnako v produkcii ako vo vývojovom prostredí.
Škálovateľnosť
Kontajnerová paradigma umožňuje jednoduché škálovanie aplikácií. Malé veľkosti obrazov a rýchle spúšťanie uľahčujú budovanie škálovateľných systémov, najmä v kombinácii s architektúrou mikroslužieb.
Kľúčové pojmy kontajnerizácie
- Kontajner (Container): Virtualizácia na úrovni OS na izolovaný beh aplikácií.
- Obraz kontajnera (Container Image): Statický súbor definujúci súborový systém a konfiguráciu kontajnera.
- Orchestrácia kontajnerov: Nástroje na správu flotily kontajnerov naprieč viacerými hostiteľmi (napr. Kubernetes).
- Kontajnerový runtime: Komponent, ktorý priamo spúšťa a spravuje kontajnery na hostiteľovi.
- Docker: Platforma, ktorá spopularizovala Linux kontajnery, vrátane nástrojov na tvorbu a správu obrazov.
- Dockerfile: Textový súbor s inštrukciami na zostavenie obrazu kontajnera.
- Kata Containers: Ľahké virtuálne stroje prinášajúce vyššiu bezpečnosť pri zachovaní výhod kontajnerov.
- Kubernetes: Špičková platforma pre orchestráciu kontajnerov vo vysoko dostupných produkčných prostrediach.
- Linux cgroups: Funkcia jadra pre zoskupovanie a obmedzovanie prostriedkov procesov.
- Linux namespaces: Funkcia jadra pre izoláciu viditeľnosti systémových zdrojov.
- LXC: Pôvodná technológia Linux kontajnerov predchádzajúca Dockeru.
- Virtuálne stroje (VM): Hardvérová virtualizácia emulujúca celý počítač s vlastným OS.
Záver
Kontajnery ponúkajú obrovské výhody oproti behu aplikácií priamo na hardvéri alebo vo virtuálnych strojoch vďaka ľahkej izolácii, flexibilite a bohatému ekosystému.