Kontejnery ulehčí virtualizaci Linuxu

4. 5. 2014

Sdílet

 Autor: © Larry Ewing
Kontejnery, odlišná odlehčená forma virtualizace, jsou nyní běžnou součástí linuxových distribucí díky technologiím jako je Linux Containers (LXC) nebo Docker.

Ještě do nedávna nebyla jiná praktická možnost, jak nabízet virtualizované řešení, než prostřednictvím hypervizorů umožňujících běh celých virtuálních strojů. Tento přístup se datuje ještě do dob sálových počítačů IBM 360 v šedesátých letech. Dnes se samozřejmě používá propracovanější forma, jako například hypervizor Xen, který běží na téměř 500 000 linuxových serverech tvořících Amazon Web Services (AWS).

Hypervizorový přístup ovšem spotřebovává mnoho systémových zdrojů – především každý virtuální stroj obsahuje plnohodnotný operační systém včetně celého jádra, jehož každá kopie do jisté míry (virtualizační farmy se samozřejěm situaci snaží řešit různými způsoby deduplikace a klonování souborů) duplicitně zabírá operační paměť a úložiště obdobnými soubory.

Tento problém se snaží řešit právě kontejnery, které relativně nedávno (okolo roku 2000) vzešly z technologie FreeBSD Jails. Jail v podstatě umožňuje spustit programy v sandboxu, který jim nad rámec systémového jádra zpřístupňuje jen velmi omezené systémové prostředky. Na rozdíl od plné virtualizace se kontejnery nesnaží o abstraktizaci hardwaru.

Kontejnerizace se v uplynulém desetiletí prosadila v různých formách na řadě platforem. Například unixový Oracle Solaris nabízí Zones, pro linuxové platformy jsou k dispozici otevřená řešení jako OpenVZ, LXC (Linux Containers) od firem jako Parallels, Google nebo Docker. Klíčové jsou dnes především vývojové práce probíhající na LXC, nad jehož službami běží například Docker, který se snaží zjednodušit správu spouštění aplikací v kontejnerech.

Velkým přínosem kontejnerizace je právě možnost vytváření a distribuce přenositelných aplikací, u kterých jsou omezena rizika související s interakcí s jinými aplikacemi a systémovým prostředím vůbec. Na druhé straně plná virtualizace zase umožnuje vedle sebe spouštět různé verze kernelu a zcela odlišné operační systémy a je výrazně bezpečnější.

U kontejnerů se nedoporučuje spouštět aplikace s právy superuživatele a vždy je riziko, že vinou chyb v systémových voláních může aplikace v jednom kontejneru napadnout obsah kontejnerů ostatních. U virtuálních strojů sice existují práce ukazující možnost podobného vzájemného napadání, ale publikované funkční koncepce stavěly na některých chybách procesorů, které byly dávno odstraněny.

ICTS24

Jednoznačnou výhodou kontejnerů je právě jejich úspornost, na každý server je jich možné spustit minimálně 2 až 3 krát více než klasických virtuálních strojů. A právě maximální využití hardwaru byla důvodem rozsáhlého rozšíření virtualizace. Proto také například Google již dlouho na kontejnerizaci sází a všechny jeho služby – vyhledávání, Gmail i Gogole Docs – jsou vlastně spouštěny v kontejnerech lmctfy (Let Me Contain That For You). lmctfy jsou dnes k dispozici jako otevřený zdrojový kód, i když podle některých komentářů nejde o plnohodnotnou formu kontejnerů.