Přeskočit na obsah

Řešení · Kontejnery

Jak velký server potřebuje Docker?

Kontejnery jsou procesy sdílející jedno jádro, ne malé virtuální stroje: démon drží asi 100 MB a vše ostatní jsou jen vaše vlastní procesy. Odpověď je tedy menší, než otázka čeká: proxy, aplikace, databáze a cache dohromady zaberou zhruba 515 MB, což se s rezervou vejde na BD-8 za $12.90.

Co kontejner skutečně drží v paměti

Rozpětí, ne benchmarky

Váš obraz, konfigurace a provoz tato čísla ovlivní víc, než dokáže jakákoli tabulka. Spusťte docker stats na vlastním stacku: to je jediné číslo, které platí pro vás.

Typická rezidentní paměť běžných kontejnerových zátěží
KontejnerTypická paměťVejde se na BD-8 (8 GB)
Reverzní proxynginx, Caddy, Traefik15–60 MB129 v horní hranici
Malá webová aplikaceNode, Python, Go: jeden proces60–200 MB38 v horní hranici
PostgreSQL nebo MySQLmalá data, výchozí pool200–500 MB15 v horní hranici
Redisjako cache, omezeno maxmemory20–200 MB38 v horní hranici
Služba v JVMJava, Kotlin, Elasticsearch500–2000 MB3 v horní hranici

Výpočet

Co který tarif pojme

Paměť minus 300 MB pro operační systém a 100 MB pro démona, vydělená tím, co drží vaše kontejnery. Prostřední sloupec je celý stack (proxy, aplikace, databáze, cache) o velikosti asi 515 MB.

Kapacita kontejnerů a stacků podle tarifu, s diskem a aktuálními cenami
TarifRAMCelé stackyMalé aplikaceDiskCenaNasadit
VPS-11 GB1325 GB$9.90Nasadit
BD-88 GB1538100 GB$12.90Nasadit
BD-1212 GB2359200 GB$17.90Nasadit
BD-2424 GB46120300 GB$31.90Nasadit

Disk je druhým překvapením, se kterým se lidé setkají později: obrazy, svazky a logy se tiše hromadí. Dejte docker system prune do týdenního cronu dřív, než to začne hořet, ne až potom.

Proti sobě samým

Kdy tohle nekupovat

Spravovaná kontejnerová platforma stojí víc, protože provoz zajišťuje sama. To je skutečná věc, za kterou se vyplatí platit.

VPS vám dá root a s ním i aktualizace, restarty, certifikáty a noční pohotovost. Je to výrazně levnější a skutečně je to více práce. Pokud tu práci dělat nechcete, poctivou odpovědí je spravovaná platforma a raději vás na ni odkážeme, než abychom prodali stroj, který skončí opuštěný s neaktualizovaným démonem vystaveným internetu. Dvě menší rady v tomtéž duchu: nastavte každému kontejneru limit paměti, aby zemřel ten, který se chová špatně, a ne vaše databáze, a na jednom stroji nesahejte po Kubernetes: orchestrátor, který nemá co plánovat, je jen složitost navíc.

Otázky

Na co se lidé ptají před koupí.

Kolik RAM spotřebuje samotný Docker?
Velmi málo, a to lidi překvapuje. Démon Dockeru drží zhruba 100 MB a každý další kontejner je jen proces: žádný druhý operační systém, žádné druhé jádro, žádné pevné náklady na kontejner jako u virtuálního stroje. Výpočet je tedy jednoduchý: paměť stroje minus asi 300 MB pro operační systém a 100 MB pro démona, rozdělená mezi procesy, které skutečně provozujete.
Kolik kontejnerů zvládne malý VPS?
Víc, než otázka naznačuje, protože „kontejner“ není jednotka velikosti. Deset reverzních proxy a jeden Elasticsearch jsou naprosto odlišné stroje. Na BD-8 (8 GB za $12.90) zaberou proxy, webová aplikace, databáze a cache dohromady zhruba 515 MB, takže většina stroje zůstane volná. Dělení za vás provede tabulka výše; spusťte `docker stats` na vlastním stacku, abyste získali číslo, které skutečně platí pro vás.
Je VPS levnější než spravovaná kontejnerová platforma?
Na ceně téměř vždy, ale to není celé srovnání. Platforma si účtuje víc, protože zajišťuje provoz: aktualizace, restarty, certifikáty, pohotovost ve 3 ráno. VPS vám dá root a to vše vrátí vám. Pokud chcete provozovat kontejnery a jste ochotni tuto práci převzít, je VPS výrazně levnější. Pokud ne, plaťte platformu: raději to řekneme, než abychom vám prodali stroj, který skončí opuštěný s neaktualizovaným démonem.
Potřebuji Docker Swarm nebo Kubernetes?
Na jednom stroji ne. Compose stačí pro stack na jediném serveru a je správnou odpovědí pro drtivou většinu self-hosted instalací: úkolem orchestrátoru je plánování napříč stroji, a s jedním strojem není co plánovat. Po Kubernetes sáhněte, až budete skutečně mít několik strojů a důvod pro tu složitost, ne dřív.
Co dojde nejdřív: paměť, CPU, nebo disk?
Obvykle paměť, a selže hlasitě: OOM killer jádra vybere proces a ukončí ho, což vypadá, jako by se kontejner záhadně restartoval. Nastavte limity paměti pro každý kontejner, aby zemřel ten, který se chová špatně, a ne vaše databáze. Druhým překvapením je disk: obrazy, svazky a logy se tiše hromadí, takže `docker system prune` patří do týdenního cronu dlouho předtím, než to začne hořet.
Jaký obraz má běžet na hostiteli?
Kterýkoli z našich: každý tarif spustí každý obraz a Docker běží na všech. Pokud nemáte vyhraněný názor, vyplatí se výchozí Ubuntu LTS, prostě proto, že s ním počítá většina dokumentace ke kontejnerům. Na distribuci záleží mnohem méně, než by se zdálo: kontejnery si nesou vlastní userland, takže hostitel je jen o málo víc než jádro a démon.