GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit limit využití paměti Dockeru a CPU

Úvod

Ve výchozím nastavení mají kontejnery Docker přístup k celé paměti RAM a CPU hostitele. Pokud je ponecháte spuštěné s těmito výchozími nastaveními, může to vést k omezení výkonu.

Pokud neomezíte využití paměti a procesoru Dockerem, může Docker využívat všechny systémové prostředky.

V tomto kurzu se dozvíte, jak omezit využití paměti a CPU kontejnery Docker.

Nakonfigurujte systém pro povolení omezení zdrojů

Než budete moci spustit kontejner s omezenými prostředky, zkontrolujte, zda váš systém podporuje tuto možnost Docker. Tato příručka vám ukáže, jak to udělat v Ubuntu, a také jak tuto funkci v případě potřeby povolit.

1. Nejprve spusťte příkaz:

sudo docker info

Pokud obdržíte výstup WARNING: No swap limit support , omezení zdrojů není ve výchozím nastavení povoleno.

2. Chcete-li přidat tuto možnost, upravte konfigurační soubor grub. Otevřete soubor v textovém editoru dle vašeho výběru (používáme nano):

sudo nano /etc/default/grub

3. Poté přidejte následující řádek:

GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"

4. Uložte změny a ukončete soubor.

5. Poté aktualizujte konfiguraci grub příkazem:

sudo update-grub

6. Nakonec restartujte počítač, aby se změny projevily.

7. Chcete-li ověřit, že jste úspěšně povolili danou funkci Docker, znovu spusťte docker info příkaz.

Omezit přístup k paměti kontejneru Docker

Existuje několik omezení paměti RAM, která můžete nastavit pro kontejner Docker. Některé z nich zahrnují:

  • Konfigurace maximálního množství paměti, kterou může kontejner použít.
  • Definování množství paměti, kterou může kontejner Docker vyměnit na disk.
  • Nastavení měkkého limitu pro množství paměti přiřazené kontejneru.

Níže zjistěte, jak nakonfigurovat omezení paměti Docker.

Nastavit maximální přístup do paměti

Chcete-li omezit maximální využití paměti pro kontejner, přidejte --memory možnost docker run příkaz. Případně můžete použít zkratku -m .

V rámci příkazu určete, kolik paměti chcete tomuto konkrétnímu kontejneru věnovat.

Příkaz by měl odpovídat syntaxi:

sudo docker run -it --memory="[memory_limit]" [docker_image]

Hodnota memory_limit by mělo být kladné celé číslo následované příponou b , k , m nebo g (zkratka pro bajty, kilobajty, megabajty nebo gigabajty). Chcete-li například omezit kontejner s 1 GB paměti RAM, přidejte --memory="1g" .

Chcete-li například spustit instanci kontejneru Ubuntu a nastavit limit paměti na 1 GB, příkaz je:

sudo docker run -it --memory="1g" ubuntu

Nastavit Swap to Disk Memory Limit

Pomocí swap umožňuje ukládat data i po vyčerpání veškeré paměti RAM přiřazené kontejneru. Dělá to tak, že ignoruje omezení paměti a zapisuje přímo na disk. Ačkoli se jedná o užitečnou funkci, není to doporučený postup, protože zpomaluje výkon.

Chcete-li nakonfigurovat tento dodatečný prostor RAM, definujte celkové množství odkládací paměti. Než to uděláte, měli byste již mít maximální paměť (--memory ) sady neswapovací paměti. Swap zahrnuje celkové množství neswap paměti plus množství odkládací paměti rezervováno jako záloha.

Pokud například nastavíte --memory na 1 GB , stejně jako v příkladu výše, množství odkládací paměti musí být větší. Chcete-li spustit kontejner s doplňkem 1 GB odkládací paměti, nastavte odkládací paměť na 2 GB .

Syntaxe pro spuštění kontejneru s omezenou pamětí a další odkládací pamětí je:

sudo docker run -it --memory="[memory_limit]" --memory-swap="[memory_limit]" [docker_image]

Chcete-li například spustit kontejner z obrazu Ubuntu s přiřazením 1 GB RAM pro kontejner k použití a rezervováním 1 GB RAM pro odkládací paměť, zadejte:

sudo docker run -it --memory="1g" --memory-swap="2g" ubuntu

Nastavit měkký limit na paměť kontejneru

Omezení využití paměti kontejnerem s --memory v podstatě nastavuje tvrdou hranici, kterou nelze překonat. Případně můžete nastavit měkký limit (--memory-reservation ), který varuje, když kontejner dosáhne konce přidělené paměti, ale nezastaví žádnou z jeho služeb.

Pokud --memory omezení viz nejsou nastavena, nastavení měkkého limitu pomocí --memory-reservation neomezuje úplně prostor kontejneru. Pokud máte povoleny obě funkce, je měkký limit vždy nižší než maximální kapacita prostoru.

Například kontejner Ubuntu má rezervaci paměti 750 MB a maximální kapacita paměti RAM 1 BG , použijte příkaz:

sudo docker run -it --memory="1g" --memory-reservation="750m" ubuntu

Omezit využití CPU kontejneru Docker

Stejně jako využití paměti RAM nemají kontejnery Docker žádná výchozí omezení pro procesor hostitele. Poskytnutí neomezeného využití procesoru kontejnerům může vést k problémům.

Existuje několik způsobů, jak definovat, kolik prostředků CPU z hostitelského počítače chcete přiřadit kontejnerům.

Pokud máte například hostitele se 2 procesory a chcete kontejneru udělit přístup k jednomu z nich, použijte možnost --cpus="1.0" . Příkaz pro spuštění kontejneru Ubuntu s přístupem k 1 CPU by byl:

sudo docker run -it --cpus="1.0" ubuntu

Můžete také použít --cpu-shares možnost dát kontejneru větší nebo menší podíl cyklů CPU. Ve výchozím nastavení je tato hodnota nastavena na 1024 .

Chcete-li spustit kontejner s menšími podíly CPU, spusťte:

sudo docker run -it --cpus-shares="700" ubuntu

Další možnosti pro omezení využití CPU kontejneru naleznete v oficiální dokumentaci Docker.


Ubuntu
  1. Jak omezit využití CPU procesu v Linuxu

  2. Jak najít nejběžnější procesy podle využití paměti a CPU

  3. Najděte 10 nejběžnějších procesů podle využití paměti a CPU

  1. Jak potrubí omezují využití paměti?

  2. Načíst využití CPU a paměti jedním procesem v Linuxu?

  3. Omezte paměť a procesor pomocí lxc-execute

  1. Jak zjistit využití CPU

  2. Jak omezit využití paměti aplikace?

  3. Jak omezit využití paměti aplikací v linuxu?