Přeskočit na obsah

LXC

Z Wikipedie, otevřené encyklopedie
LXC
Logo
VývojářKernel: Virtuozzo, IBM, Google, Eric Biederman a další
Userspace: Daniel Lezcano, Serge Hallyn, Stéphane Graber a další
Aktuální verze6.0.6 (27. února 2026)
Operační systémLinux
Platformax86, IA-64, PowerPC, SPARC, Itanium, ARM
Vyvíjeno vC, Shell
Typ softwarucontainer runtime a svobodný a otevřený software
LicenceGNU LGPL v2.1 (části pod GNU GPL v2 a BSD)
Weblinuxcontainers.org
Některá data mohou pocházet z datové položky.

Linux Containers (LXC) je metoda virtualizace na úrovni operačního systému, která umožňuje provozovat více izolovaných systémů Linux (tzv. kontejnerů) na jednom řídicím hostitelském počítači (host) s využitím jediného sdíleného jádra Linuxu.

Na rozdíl od hypervizorů jako jsou KVM, VMware nebo Xen, které vytvářejí plnohodnotné virtuální stroje s vlastním jádrem a emulovaným hardwarem, LXC využívá funkce jádra Linuxu, jako jsou cgroups a namespaces, k zajištění izolace procesů a prostředků. Z toho důvodu kontejnery dosahují téměř nativního výkonu s minimální režií, jsou však omezeny na spouštění operačních systémů založených na stejném jádře jako hostitel.[1]

Historie a vývoj

[editovat | editovat zdroj]

V roce 2008 byly do hlavní větve linuxového jádra integrovány funkce cgroups. To umožnilo vznik LXC jako první kompletní implementace kontejnerového manažeru, který nevyžadoval externí patche jádra.[2]

V roce 2014  byla vydána verze LXC 1.0, kterou hlavní vývojáři (Stéphane Graber a Serge Hallyn ze společnosti Canonical) označili za první verzi vhodnou pro produkční nasazení s dlouhodobou podporou (LTS).[3] V té době technologie LXC sloužila jako základ pro rané verze nástroje Docker, než přešel na vlastní knihovnu libcontainer[4].

V současnosti je projekt spravován organizací LinuxContainers.org.[5]

Architektura a technické principy

[editovat | editovat zdroj]

LXC není samostatný virtualizační software, ale spíše uživatelské rozhraní pro nízkoúrovňové mechanismy jádra Linuxu[6]. Spoléhá na tyto komponenty:

Namespaces (jmenné prostory)

[editovat | editovat zdroj]

Namespaces představují v rámci operačního systému Linux základní mechanismus pro izolaci procesů, který definuje rozsah viditelnosti systémových zdrojů pro danou skupinu procesů. Tato technologie umožňuje, aby proces uvnitř kontejneru vnímal systém jako zcela oddělené prostředí, přičemž jsou mu zpřístupněny pouze jeho vlastní zdroje, zatímco zdroje hostitelského systému nebo jiných souběžně běžících kontejnerů zůstávají skryty. [7]

Základním prvkem je PID namespace, který zajišťuje izolaci číselných identifikátorů procesů. Díky tomu může být hlavnímu procesu v rámci kontejneru přiřazen PID 1, ačkoliv v rámci globálního pohledu hostitelského systému vystupuje pod zcela jiným identifikátorem. [7]

Síťovou nezávislost definuje Network Namespace, který každému celku poskytuje dedikovaný síťový zásobník zahrnující vlastní IP adresy, směrovací tabulky a pravidla firewallu. [7]

Bezpečnost systému podporuje User Namespace, který provádí mapování uživatelských identifikátorů UID a identifikátorů skupin GID. Tento mechanismus umožňuje provoz neprivilegovaných kontejnerů, kdy uživatel s právy správce (root) unvnitř kontejneru disponuje pouze s právy běžného uživatele na úrovni hostitelského systému. [7]

Cgroups (kontrolní skupiny)

[editovat | editovat zdroj]

LXC využívá mechanismus cgroups (zkratka control groups) jako nástroj pro striktní řízení a limitování přístupu kontejnerů k hardwarovým prostředkům hostitelského systému. Tato technologie umožňuje jemnou granulaci přidělování výkonu procesoru, a to buď formou vyhrazení konkrétních jader, nebo definováním podílu procesorového času. V oblasti operační paměti zajišťuje cgroups dodržování stanovených limitů RAM.[8]

Mechanismus se vztahuje i na vstupně-výstupní operace diskového subsystému, kde reguluje datový tok a prioritu přístupu k blokovým zařízením[9]. Dalším bezpečnostním prvkem je pak integrace s ovladačem pro seznam povolených zařízení (device whitelist controller), který přesně definuje, ke kterým fyzickým či virtuálním uzlům zařízení má kontejner oprávnění přistupovat, čímž efektivně izoluje hardware hostitele před neautorizovanou manipulací[10].

Srovnání s dalšími technologiemi

[editovat | editovat zdroj]

LXC vs. KVM

[editovat | editovat zdroj]

Rozdílem mezi technologií LXC a KVM je přístup k virtualizaci, který přímo ovlivňuje efektivitu a bezpečnost obou řešení.

Z hlediska výkonu dosahuje LXC v operacích s procesorem a pamětí hodnot téměř shodných s nativním systémem (tzv. bare-metal). Efektivita vyplývá ze sdílení jádra hostitelského systému, díky čemuž LXC netrpí režií spojenou s emulací hardwaru a překladem instrukcí, která je použitá pro KVM. Ve srovnávacích testech HPC (High Performance Computing), vykazuje kontejnerizace výrazně lepší propustnost než plná virtualizace. [11]

Virtuální stroje v KVM jsou od hostitele odděleny silnější bariérou, neboť každý z nich disponuje vlastním jádrem operačního systému. U kontejnerů představuje sdílené jádro potenciální riziko. [11]

Dalším rozdílem je rychlost spouštění, kdy je LXC díky své architektuře řádově rychlejší. Kontejnery nevyžadují zavádění vlastního jádra ani inicializaci virtuálního hardwaru, proces startu systému probíhá v řádu milisekund až sekund. V prostředí KVM je start výrazně pomalejší (v řádu jednotek až desítek sekund), protože musí proběhnout kompletní bootovací sekvence od emulovaného BIOSu až po zavedení operačního systému. [11]

LXC vs. Docker

[editovat | editovat zdroj]

Technologie LXC a Docker sdílejí základní mechanismy (namespaces, cgroups), liší se ale ve své provozní filosofii a způsobu nasazení.

LXC se zaměřuje na úroveň systémových kontejnerů, které se v praxi chovají jako odlehčené virtuální stroje. Je primárně určeno pro dlouhodobý běh a správu, přičemž procesy údržby, konfigurace a aktualizací se v tomto prostředí provádějí obdobným způsobem jako u virtuálních privátních serverů. [12]

Docker reprezentuje model aplikačních kontejnerů, jejichž primárním účelem je izolace a spuštění jediné konkrétní aplikace nebo procesu. Architektura Dockeru je navržena jako efemérní a bezstavová, což znamená, že kontejnery jsou chápány jako dočasné instance vytvořené z neměnných obrazů. Namísto aktualizace běžícího kontejneru se v ekosystému zpravidla nahrazuje celý obraz novou verzí. [12]

Ekosystém a nástroje

[editovat | editovat zdroj]

K LXC se váže řada nástrojů. Samostatně LXC poskytuje nízkoúrovňové příkazy jako lxc-create, lxc-start či lxc-attach. Pro jednodušší správu vznikl projekt LXD (nyní pod správou Canonicalu) a jeho komunitní fork Incus. Tyto nástroje fungují jako „hypervizor kontejnerů“ a poskytují REST API pro správu celých clusterů kontejnerů.[13]

  1. FELTER, Wes; FERREIRA, Alexandre; RAJGARHIA, R.; RUBIO, Juan. An Updated Performance Comparison of Virtual Machines and Linux Containers [online]. IBM Research, 2015 [cit. 2024-01-25]. Dostupné online. (anglicky)
  2. A Brief History of Containers: From the 1970s Till Now [online]. 2025-09-10 [cit. 2026-01-27]. Dostupné online. (anglicky)
  3. Linux Containers - LXC - News. linuxcontainers.org [online]. [cit. 2026-01-27]. Dostupné online. (anglicky)
  4. LXC vs. libcontainer. Educative [online]. [cit. 2026-01-27]. Dostupné online. (anglicky)
  5. Linux Containers. linuxcontainers.org [online]. [cit. 2026-01-27]. Dostupné online. (anglicky)
  6. Linux Containers - LXC - Introduction. linuxcontainers.org [online]. [cit. 2026-01-27]. Dostupné online. (anglicky)
  7. 1 2 3 4 NIMMAGADDA, Srikanth. Linux Namespaces and cgroups as OS Primitives for Lightweight Virtualization: Architecture, Isolation Mechanisms, and Performance Evaluation. Turkish Journal of Computer and Mathematics Education (TURCOMAT). 2018-04-22, roč. 9, čís. 2, s. 811–822. Dostupné online [cit. 2026-02-01]. ISSN 3048-4855. doi:10.61841/turcomat.v9i2.15258. (anglicky)
  8. Control Groups — The Linux Kernel documentation. www.kernel.org [online]. [cit. 2026-02-01]. Dostupné online.
  9. Block IO Controller — The Linux Kernel documentation. www.kernel.org [online]. [cit. 2026-02-01]. Dostupné online.
  10. Device Whitelist Controller — The Linux Kernel documentation. www.kernel.org [online]. [cit. 2026-02-01]. Dostupné online.
  11. 1 2 3 XAVIER, M. G.; NEVES, M. V. Performance evaluation of container-based virtualization for high performance computing environments. In: 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing. [s.l.]: IEEE, 2013. doi:10.1109/PDP.2013.41. S. 233–240. (anglicky)
  12. 1 2 DANIEL, Silva,; JOÃO, Rafael,; ALEXANDRE, Fonte,. Toward Optimal Virtualization: An Updated Comparative Analysis of Docker and LXD Container Technologies. Computers. 2024-04, roč. 13, čís. 4. Dostupné v archivu pořízeném z originálu dne 2025-08-12. ISSN 2073-431X. doi:10.3390/computer. (anglicky)
  13. LTD, Canonical. Canonical LXD. Canonical [online]. [cit. 2026-01-27]. Dostupné online. (anglicky)

Související články

[editovat | editovat zdroj]

Externí odkazy

[editovat | editovat zdroj]