GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak optimalizovat výkon Dockeru

Úvod

Docker kontejnery jsou navrženy tak, aby běžely kdekoli – v interním datovém centru, cloudu nebo hybridním a multicloudovém prostředí. Po vybalení mají kontejnery Docker tendenci překonávat ostatní metody virtualizace, ale lze je dále optimalizovat, aby nabízely ještě lepší výkon.

Tento článek pojednává o důvodech nižšího než optimálního výkonu Dockeru v některých scénářích a nabízí řešení, která lze použít ve vašem systému k optimalizaci nasazení Dockeru.

Co způsobuje pomalý výkon dockeru?

Docker je komplexní systém, který závisí na mnoha faktorech, včetně konfigurace hostitele a kvality sítě. Níže jsou uvedeny některé z nejčastějších důvodů, proč je Docker pomalý.

Neadekvátně přidělené zdroje

Když kontejnery Docker nemají přístup k dostatečnému množství prostředků, rychle dochází k problémům s výkonem. V závislosti na průměrné velikosti obrazu projektu a počtu kontejnerů, které provozujete, musí hostitelé a síť unést pracovní zátěž.

Velikost obrázku dockeru

Docker používá obrázky k vytváření kontejnerů. Obrázky se skládají ze zdrojového kódu, knihoven a závislostí nezbytných pro správné fungování aplikace. Kontejner Docker vytvořený z bitové kopie je stabilní prostředí pro vývoj a testování.

Nepraktické obrazy Dockeru však spotřebovávají spoustu zdrojů a zatěžují celý systém. Vzhledem k tomu, že velikost obrázku je relativní pojem a závisí na potřebách konkrétní aplikace, toto tvrzení se týká především toho, jak moc je obrázek optimalizován nebo přeplněný nepotřebnými soubory .

Velikost kontextu souboru Docker

docker build příkaz používá k vytvoření obrazu dva zdroje - Dockerfile a kontext. Kontext je sada souborů v určeném umístění, na které se může proces sestavování odkazovat. Pokud je velikost kontextu příliš velká, může to ovlivnit výkon při sestavení.

Výchozí konfigurace dockeru se stále používá

I když výchozí konfigurace Dockeru poskytuje přiměřené parametry pro fungování Dockeru ihned po vybalení, každý systém je specifický. Špatně nakonfigurované možnosti spouštění démona, síť a další parametry mohou snížit výkon Dockeru.

Latence sítě

Pokud si nevytvoříte registr, Docker použije Dockerhub k přímému načítání obrázků. Přesouvání velkého množství dat přes internet způsobuje, že latence sítě se stává faktorem v obecném výkonu Dockeru.

Jak optimalizovat výkon Dockeru

Existuje několik způsobů, jak zrychlit provoz vašeho Dockeru, od hardwarových vylepšení až po úpravy uvnitř samotného Dockeru.

Správně alokovat zdroje

Výkon hostitelského počítače ovlivňuje výkon kontejnerů. Pomalý procesor nebo nedostatečná RAM se mohou stát úzkým hrdlem a zpomalit výkon Dockeru.

Když zaznamenáte pomalý výkon Dockeru, zkontrolujte CPU, využití paměti a dostupné místo na disku. Pokud některá komponenta nefunguje podle očekávání, zvažte upgrade systému.

Při práci s konkrétním kontejnerem, který má horší výkon, než se očekávalo, může být užitečné zkontrolovat metriky specifické pro kontejner.

docker stats zobrazí důležitá metrická data o běžících kontejnerech. Použijte jej k diagnostice potenciálních problémů.

docker stats

Výstup příkazu zobrazuje:

  • Využití CPU.
  • Využití paměti a limit na kontejner.
  • Procento spotřeby paměti.
  • NET I/O – síťový provoz dockeru.
  • BLOKOVAT I/O – Data zapisovaná do hostitelských blokových zařízení.
  • PIDS – Počet vláken vytvořených kontejnerem.

Optimalizace obrázků Docker

Nejprve zkontrolujte velikost vytvořeného obrazu pomocí následujícího příkazu:

docker images

Výstup uvádí úložiště obrázku, značku, ID, čas od vytvoření a velikost:

Zkontrolujte Dockerfile obrázku a ujistěte se, že kontext souboru není příliš velký. Kontext uvádí soubory, které Docker potřebuje k vytvoření kontejneru.

Velikost kontextu se zobrazí ve výstupu docker build příkaz:

docker build -t [image-name] .

V následujícím příkladu je velikost kontextu 4,641 MB:

Pokud je kontext sestavení obrázku příliš velký, vytvořte .dockerignore soubor v kořenovém adresáři kontextu a přidejte do něj nepotřebné soubory. Docker bude při vytváření bitové kopie ignorovat zde uvedené soubory.

Zde je příklad .dockerignore soubor:


temp*
*/temp*

První řádek říká Dockeru, aby z kontextu vyloučil všechny soubory a adresáře, jejichž názvy začínají temp v kořenovém adresáři. Druhý dělá totéž pro jakýkoli podadresář kořenového adresáře.

Zkontrolujte závislosti

Při instalaci závislostí mohou obrazy Dockeru založené na Debianu generovat další binární soubory a soubory. Některé z těchto vzájemných závislostí nejsou pro normální fungování kontejneru potřeba a lze je odstranit.

Chcete-li ručně odstranit zbytečné vzájemné závislosti, použijte příkazy uvedené níže.

Odstraňte balíčky v /var/cache :

apt clean

Odebrat zastaralé balíčky:

apt autoclean

Odstraňte vzájemné závislosti používané odstraněnými balíčky:

apt autoremove

Zvažte přechod na architekturu Microservice

Monolitické aplikace bývají pomalejší než aplikace vytvořené pomocí architektury mikroslužeb. Pokud mají vaše kontejnery Docker potíže s výkonem, může to být způsobeno velikostí aplikace uvnitř kontejneru. Migrace aplikace na mikroslužby umožňuje rozdělit pracovní zátěž mezi více než jeden kontejner.

Používejte vyhrazené zdroje

V cloudových prostředích virtuální počítače často sdílejí hardwarové prostředky s jinými virtuálními počítači na stejném serveru. Hostování kontejnerů na vyhrazeném hardwaru Bare Metal Cloud však eliminuje režii virtualizace a zlepšuje výkon kontejnerů. Kontejnerované aplikace nesdílejí systémové prostředky, jako je RAM a CPU, což nesnižuje latenci a umožňuje aplikacím plně využívat hardware.

Používejte odlehčený operační systém

Plně vybavené operační systémy, jako jsou Windows, macOS nebo komerční distribuce Linuxu, spotřebovávají velkou část systémových prostředků a zbývají méně, než je nutné pro optimální výkon Dockeru. Lehké distribuce jako RancherOS, CoreOS Container Linux, Alpine Linux a VMware Photon OS byly optimalizovány pro práci s kontejnery Docker. Vytváření obrázků na odlehčeném systému může ušetřit až 100 MB konečné velikosti obrázku, což výrazně zvyšuje rychlost.

Cache Dockerfile Layers

Použijte ukládání vrstev do mezipaměti ke zlepšení rychlosti vytváření obrazu. Když Docker začne vytvářet obrázek, prohledá mezipaměť vrstvy obsahující podobné podpisy a použije je v procesu. Tato funkce urychluje proces budování.

Pokud chcete jako zdroj mezipaměti zadat již existující obrázek, použijte --cache-from možnost:

docker build --cache-from [image-to-cache-from] -t [next-build] -f [path-to-dockerfile]

Docker
  1. Jak nainstalovat Docker na Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  2. Jak nainstalovat Docker v CentOS

  3. Jak nainstalovat Jenkins pomocí Docker

  1. Jak nainstalovat Docker na CentOS 7

  2. Jak nainstalovat Docker na Raspberry Pi

  3. Jak nainstalovat Docker na CentOS 8

  1. Jak nainstalovat Docker na Ubuntu 22.04

  2. Learning Docker:Jak vytvořit kontejner Docker

  3. Jak nainstalovat Docker na Debian 11