Kontejnerizace vs. Nativní Server (KISS)

Kompletní architektonická analýza, zkušenosti z praxe a závěrečné srovnání

1. Argumenty pro kontejnerizaci a srovnání

Kontejnery nevznikly jako řešení pro vývojáře spravujícího jeden vlastní VPS. Vznikly jako odpověď na potřeby velkých firemních prostředí (Enterprise), CI/CD automatizace a cloudového škálování.

A) Reprodukovatelnost

Nativní: Rozdíly mezi vývojovým (macOS/Win) a produkčním (Debian) prostředím mohou vedou k chybějícím knihovnám či modulům.

Kontejnery: Přesně stejný kontejnerový image běží na vývoji i produkci.

B) Izolace závislostí

Nativní: Po smazání starých verzí PHP/Postgres zůstávají v systému zbytky balíčků a konfigurací.

Kontejnery: Příkaz docker rm nebo lxc-destroy smaže aplikaci se všemi závislostmi bez zanechání smetí.

C) Multi-tenancy & Bezpečnost

Nativní: Průnik přes PHP může hypoteticky ohrozit celý souborový systém hostitele.

Kontejnery: Útočník zůstane izolován v prostředí kontejneru bez přístupu k hostitelskému OS.

D) Automatizace & Škálování

Při potřebě automaticky navyšovat kapacitu na desítky instancí napříč clustery (Kubernetes) jsou kontejnery standardem.

Vlastnost Nativní Vanilla (KISS) Doporučeno Kontejnery (Docker / LXC) Complex
Prvotní nastavení Extrémně rychlé a přímočaré Složitější (řešení sítí, mountů, práv)
Režie systému Nulová režie (přímý výkon) Malá (LXC) až střední (Docker/VM)
Přenositelnost Pracnější opotřebování konfigurace Blesková (přenese se hotový image)
Úklid po zrušení Může vyžadovat manuální dočištění 100% čisté smazání jedním příkazem
Správa verzí Přes unix sockety a různé porty Pro každý projekt izolovaný kontejner

2. Reakce a postřehy z praxe

3. Odborná reakce na postřehy z praxe

Ad 1) Docker na Windows je mýtus o „funguje to všude stejně“

Máte absolutní pravdu. Slib „Docker vyřeší kompatibilitu mezi OS“ selhává hned v prvním momentě na Windows:

  • CRLF vs. LF: Skripty připojené z Windows selhávají v Linux kontejneru kvůli neviditelným znakům návratu vozíku (\r).
  • Souborová práva (chmod): Windows souborový systém nezná POSIX práva, což vede k nefunkčním složkám storage/ nebo cache.
  • Výkon WSL2: Zápis na disk připojený z Windows do Dockeru je v porovnání s nativním Linuxem extrémně pomalý.

Ad 2) Vyladěný Bash skript zvládne úklid i na nativu

Přesně tak. Správně napsaný odinstalátor uklidí systém do posledního bajtu. Příkaz typu:

apt purge php8.5* postgresql-18* && rm -rf /etc/php/8.5 /var/lib/postgresql/18

Smaže přesně to, co má. Argument o „neumytelném smetí“ platí spíše pro nezkušené správce bez automatizačních skriptů.

Ad 3) Zranitelnost kontejneru a útok na hostitele

Přesně tak, kontejner **není virtuální stroj (VM)**:

  • Sdílí stejné Linuxové jádro s hostitelským systémem.
  • Chyba v jádře (Kernel Privilege Escalation) umožňuje útočníkovi „vyskočit“ z kontejneru přímo do root přístupu na hostiteli.
  • Při použití bind-mountů (připojených složek hostitele) má útočník přímý přístup k datům na hostitelském disku.

Ad 4) Limitace zdrojů na nativním OS

Linux umí omezovat zdroje na úrovni OS odpradávna:

  • Nativně v aplikaci: memory_limit v PHP, shared_buffers v PostgreSQL.
  • Na úrovni OS (cgroups / systemd): V Ubuntu Serveru lze procesům omezit RAM i CPU přímo v konfiguraci služby:
[Service]
MemoryMax=2G
CPUQuota=200%

LXC i Docker nepoužívají nic jiného než právě tyto cgroups z Linuxového jádra.

4. Závěrečný verdikt

To, co jste popsal, je důvod, proč se řada zkušených Senior Sysadminů raději drží čistého Linuxu (Vanilla / KISS).

Kontejnery přinášejí ohromnou vrstvu abstrakce a nových bodů selhání (sítě, DNS, sockety), přičemž jejich přínos pro samostatný server s několika projekty je minimální.

Nativní nastavení (PHP přes různé unix sockety + PostgreSQL na různých portech) je stále nejstabilnější, nejrychlejší a nejsnadněji laditelnou cestou.