GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come impostare la memoria Docker e il limite di utilizzo della CPU

Introduzione

Per impostazione predefinita, i container Docker hanno accesso alla RAM completa e alle risorse CPU dell'host. Lasciarli funzionare con queste impostazioni predefinite può causare colli di bottiglia nelle prestazioni.

Se non limiti la memoria di Docker e l'utilizzo della CPU, Docker può utilizzare tutte le risorse di sistema.

In questo tutorial, scopri come limitare l'utilizzo della memoria e della CPU dei contenitori Docker.

Configura il sistema per abilitare la limitazione delle risorse

Prima di poter eseguire un container con risorse limitate, controlla se il tuo sistema supporta questa opzione Docker. Questa guida ti mostra come farlo in Ubuntu e come abilitare questa funzione se necessario.

1. Innanzitutto, esegui il comando:

sudo docker info

Se ricevi l'output WARNING: No swap limit support , la limitazione delle risorse non è stata abilitata per impostazione predefinita.

2. Per aggiungere questa opzione, modifica il file di configurazione di grub. Apri il file in un editor di testo a tua scelta (stiamo usando nano):

sudo nano /etc/default/grub

3. Quindi, aggiungi la seguente riga:

GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"

4. Salva le modifiche ed esci dal file.

5. Quindi, aggiorna la configurazione di grub con il comando:

sudo update-grub

6. Infine, riavvia il computer affinché le modifiche avvengano.

7. Per verificare di aver abilitato correttamente la funzione Docker specificata eseguendo nuovamente le docker info comando.

Limita l'accesso alla memoria del contenitore Docker

Esistono diverse limitazioni della RAM che puoi impostare per un contenitore Docker. Alcuni di essi includono:

  • Configurazione della quantità massima di memoria utilizzabile da un container.
  • Definire la quantità di memoria che un container Docker può scambiare su disco.
  • Impostazione del limite software per la quantità di memoria assegnata a un contenitore.

Di seguito, scopri come configurare i limiti di memoria Docker.

Imposta l'accesso massimo alla memoria

Per limitare la quantità massima di utilizzo della memoria per un contenitore, aggiungi il --memory opzione per la docker run comando. In alternativa, puoi utilizzare la scorciatoia -m .

All'interno del comando, specifica quanta memoria vuoi dedicare a quel contenitore specifico.

Il comando dovrebbe seguire la sintassi:

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

Il valore di memory_limit dovrebbe essere un numero intero positivo seguito dal suffisso b , k , mi o g (abbreviazione di byte, kilobyte, megabyte o gigabyte). Ad esempio, per limitare il contenitore a 1 GB di RAM, aggiungi --memory="1g" .

Ad esempio, per eseguire un'istanza di un container Ubuntu e impostare il limite di memoria su 1 GB, il comando è:

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

Imposta Swap su Limite memoria disco

Usando lo swap l'opzione consente di memorizzare i dati anche dopo che tutta la RAM assegnata al contenitore è stata esaurita. Lo fa ignorando la limitazione della memoria e scrivendo direttamente sul disco. Sebbene questa sia una funzione utile, non è una pratica consigliata in quanto rallenta le prestazioni.

Per configurare questo spazio RAM aggiuntivo, definire la quantità totale di memoria di scambio. Prima di farlo, dovresti già avere la memoria massima (--memory ) del set di memoria non di swap. Lo scambio include la quantità totale di memoria non di scambio più la quantità di memoria di scambio riservato come backup.

Ad esempio, se imposti --memory a 1 GB , come nell'esempio sopra, la quantità di memoria di scambio deve essere maggiore. Per eseguire un container con un aggiuntivo 1 GB di memoria di scambio, imposta la memoria di scambio su 2 GB .

La sintassi per eseguire un contenitore con memoria limitata e memoria di scambio aggiuntiva è:

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

Ad esempio, per eseguire un contenitore dall'immagine Ubuntu, assegnando 1 GB di RAM al contenitore da utilizzare e riservando 1 GB di RAM per la memoria di scambio, digitare:

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

Imposta il limite morbido alla memoria del contenitore

Limitare l'utilizzo della memoria di un contenitore con --memory essenzialmente sta fissando un limite rigido che non può essere superato. In alternativa, puoi impostare un limite soft (--memory-reservation ) che avverte quando il container raggiunge la fine della memoria assegnata ma non interrompe nessuno dei suoi servizi.

Se --memory le limitazioni vedi non sono impostate, impostando il limite soft con --memory-reservation non limita completamente lo spazio del contenitore. Se hai entrambe le funzioni abilitate, il limite soft è sempre inferiore alla capacità di spazio massima.

Ad esempio, per un container Ubuntu avere la riserva di memoria di 750 MB e la capacità RAM massima di 1 GB , usa il comando:

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

Limita l'utilizzo della CPU del contenitore Docker

Proprio come l'utilizzo della RAM, i contenitori Docker non hanno limitazioni predefinite per la CPU dell'host. Dare ai contenitori un utilizzo illimitato della CPU può causare problemi.

Esistono diversi modi per definire la quantità di risorse CPU dalla macchina host che desideri assegnare ai contenitori.

Ad esempio, se si dispone di un host con 2 CPU e si desidera concedere a un container l'accesso a una di esse, utilizzare l'opzione --cpus="1.0" . Il comando per eseguire un contenitore Ubuntu con accesso a 1 CPU sarebbe:

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

Puoi anche utilizzare il --cpu-shares opzione per assegnare al contenitore una proporzione maggiore o minore di cicli della CPU. Per impostazione predefinita, è impostato su 1024 .

Per eseguire un contenitore con condivisioni CPU inferiori, esegui:

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

Per trovare altre opzioni per limitare l'utilizzo della CPU del contenitore, fai riferimento alla documentazione ufficiale di Docker.


Ubuntu
  1. Come limitare l'utilizzo della CPU di un processo in Linux

  2. In che modo le pipeline limitano l'utilizzo della memoria?

  3. Trova i 10 migliori processi in esecuzione per memoria e utilizzo della CPU

  4. Come ottenere l'utilizzo della CPU

  5. Limita la memoria e la cpu con lxc-execute

Come limitare l'utilizzo della CPU con CPULimit su Ubuntu Linux

Come aumentare la memoria e la CPU sulla macchina Vagrant

Come trovare i 10 principali processi in esecuzione in base all'utilizzo di memoria e CPU

Come trovare i migliori processi in esecuzione in base all'utilizzo di memoria e CPU in Linux

Limite di memoria e limite della CPU nel contenitore Docker

In che modo il tempo della CPU e l'utilizzo della CPU sono uguali?