ÚvodBlogy

Manifest Miroslae

Docker Internals: Namespaces & Cgroups

a computer screen with a lot of text on it

Docker Internals: Namespaces & Cgroups

V dnešní době se často setkáváme s pojmy jako kontejnery a Docker. Možná už jste slyšeli, že Docker umožňuje spouštět aplikace v izolovaném prostředí. Ale co se vlastně děje pod povrchem? Jak Docker zajišťuje, že každá aplikace žije ve svém vlastním "bublině"? Dnes se podíváme na dvě klíčové technologie, které to umožňují: Namespaces a Cgroups.

Co jsou Namespaces?

Namespaces jsou jedním ze základních stavebních kamenů pro izolaci procesů v Linuxu. Představte si je jako způsob, jak "zakrýt" určité části systému, takže procesy vidí jen to, co jim chcete ukázat.

Typy Namespaces

  • Mount (mnt): Odděluje souborové systémy.
  • Process ID (pid): Umožňuje procesům mít své vlastní PID.
  • Network (net): Izoluje síťová rozhraní.
  • UTS: Umožňuje změnit hostname a další identifikátory.
  • IPC: Odděluje komunikaci mezi procesy.
  • User: Umožňuje mapování uživatelských ID.

Použitím těchto namespaces může Docker vytvořit iluzi, že každý kontejner běží na svém vlastním malém počítači, i když ve skutečnosti sdílí jádro s jinými kontejnery.

Co jsou Cgroups?

Pokud namespaces řeší izolaci, pak Control Groups (Cgroups) řeší omezení zdrojů. Cgroups vám umožňují řídit, kolik CPU, paměti, diskového I/O a dalších zdrojů může určitý proces nebo skupina procesů spotřebovat.

Jak Cgroups fungují?

Cgroups pracují na principu hierarchie a pravidel. Každá skupina může mít nastavena svá vlastní omezení a pravidla, což vám umožňuje jemně řídit, kolik zdrojů každý kontejner může spotřebovat. Například můžete nastavit, že kontejner A může používat maximálně 512MB RAM a kontejner B může používat 1 CPU.

Proč jsou Namespaces a Cgroups důležité?

Bez těchto dvou technologií by Docker nebyl tím, čím je dnes. Namespaces zajišťují, že aplikace běží v izolovaném prostředí, což zvyšuje bezpečnost a stabilitu. Cgroups zase zajišťují, že žádný kontejner nepřekročí své přidělené zdroje, což zvyšuje efektivitu a předvídatelnost systému.

Použití v praxi

Setkáte se s nimi všude tam, kde se používá Docker. Ať už jde o vývojářské prostředí, kde chcete mít jistotu, že vaše aplikace poběží stejně na vašem notebooku jako na produkčním serveru, nebo o velké produkční systémy, kde je třeba efektivně řídit zdroje mezi stovkami kontejnerů.

Použití Dockeru a těchto technologií je jako mít superpower ve světě IT. Umožňuje nám to vytvářet izolovaná, reprodukovatelná a efektivně spravovaná prostředí pro naše aplikace. A to je důvod, proč byste se měli o Namespaces a Cgroups zajímat. Jsou to nástroje, které vám pomohou lépe spravovat vaše aplikace a infrastrukturu.

Závěr

Docker Internals, konkrétně Namespaces a Cgroups, jsou klíčové technologie, které umožňují efektivní a bezpečné používání kontejnerů. Pokud se chcete stát odborníkem na Docker, porozumění těmto konceptům je nezbytné. Doufám, že tento článek vám dal jasnou představu o tom, jak tyto technologie fungují a proč jsou důležité.