GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo establecer el límite de uso de CPU y memoria de Docker

Introducción

De forma predeterminada, los contenedores de Docker tienen acceso a todos los recursos de RAM y CPU del host. Dejar que se ejecuten con esta configuración predeterminada puede provocar cuellos de botella en el rendimiento.

Si no limita el uso de CPU y memoria de Docker, Docker puede usar todos los recursos del sistema.

En este tutorial, aprenda a limitar el uso de memoria y CPU de los contenedores Docker.

Configurar el sistema para habilitar la limitación de recursos

Antes de que pueda ejecutar un contenedor con recursos limitados, verifique si su sistema admite esta opción de Docker. Esta guía le muestra cómo hacerlo en Ubuntu, así como también cómo habilitar esta función si es necesario.

1. Primero, ejecute el comando:

sudo docker info

Si recibe el resultado WARNING: No swap limit support , la limitación de recursos no se ha habilitado de forma predeterminada.

2. Para agregar esta opción, edite el archivo de configuración de grub. Abra el archivo en un editor de texto de su elección (estamos usando nano):

sudo nano /etc/default/grub

3. Luego, agregue la siguiente línea:

GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"

4. Guarde los cambios y salga del archivo.

5. Luego, actualice la configuración de grub con el comando:

sudo update-grub

6. Finalmente, reinicie su máquina para que se realicen los cambios.

7. Para verificar que haya habilitado con éxito la característica de Docker dada, vuelva a ejecutar la docker info comando.

Limitar el acceso a la memoria del contenedor Docker

Hay varias limitaciones de RAM que puede establecer para un contenedor Docker. Algunos de ellos incluyen:

  • Configurar la cantidad máxima de memoria que puede usar un contenedor.
  • Definir la cantidad de memoria que un contenedor Docker puede intercambiar en el disco.
  • Establecer el límite suave para la cantidad de memoria asignada a un contenedor.

A continuación, descubra cómo configurar las limitaciones de memoria de Docker.

Establecer acceso máximo a la memoria

Para limitar la cantidad máxima de uso de memoria para un contenedor, agregue --memory opción para docker run dominio. Alternativamente, puede usar el atajo -m .

Dentro del comando, especifique cuánta memoria desea dedicar a ese contenedor específico.

El comando debe seguir la sintaxis:

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

El valor de memory_limit debe ser un número entero positivo seguido del sufijo b , k , m , o g (abreviatura de bytes, kilobytes, megabytes o gigabytes). Por ejemplo, para limitar el contenedor con 1 GB de RAM, agregue --memory="1g" .

Por ejemplo, para ejecutar una instancia de un contenedor de Ubuntu y establecer el límite de memoria en 1 GB, el comando es:

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

Establecer intercambio por límite de memoria de disco

Usando el swap La opción le permite almacenar datos incluso después de que toda la memoria RAM asignada al contenedor se haya agotado. Lo hace ignorando la limitación de memoria y escribiendo directamente en el disco. Aunque esta es una función útil, no es una práctica recomendada ya que ralentiza el rendimiento.

Para configurar este espacio RAM adicional, defina la cantidad total de memoria de intercambio. Antes de hacer esto, ya debería tener la memoria máxima (--memory ) del conjunto de memoria no intercambiable. El intercambio incluye la cantidad total de memoria no intercambiable más la cantidad de memoria de intercambio reservado como copia de seguridad.

Por ejemplo, si configura --memory a 1 GB , como en el ejemplo anterior, la cantidad de memoria de intercambio debe ser mayor. Para ejecutar un contenedor con un adicional 1 GB de memoria de intercambio, establezca la memoria de intercambio en 2 GB .

La sintaxis para ejecutar un contenedor con memoria limitada y memoria de intercambio adicional es:

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

Por ejemplo, para ejecutar un contenedor desde la imagen de Ubuntu, asignando 1 GB de RAM para que lo use el contenedor y reservando 1 GB de RAM para la memoria de intercambio, escriba:

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

Establecer límite suave para la memoria del contenedor

Limitar el uso de memoria de un contenedor con --memory es esencialmente establecer un límite estricto que no puede ser superado. Alternativamente, puede establecer un límite flexible (--memory-reservation ) que advierte cuando el contenedor llega al final de su memoria asignada pero no detiene ninguno de sus servicios.

Si --memory las limitaciones que se ven no están establecidas, configurando el límite flexible con --memory-reservation no limita completamente el espacio del contenedor. Si tiene ambas funciones habilitadas, el límite suave siempre es inferior a la capacidad máxima del espacio.

Como ejemplo, para que un contenedor de Ubuntu tenga la reserva de memoria de 750 MB y la capacidad máxima de RAM de 1 BG , usa el comando:

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

Limitar el uso de CPU del contenedor Docker

Al igual que el uso de RAM, los contenedores de Docker no tienen limitaciones predeterminadas para la CPU del host. Dar a los contenedores un uso ilimitado de la CPU puede generar problemas.

Hay varias formas de definir cuántos recursos de CPU de la máquina host desea asignar a los contenedores.

Por ejemplo, si tiene un host con 2 CPU y desea dar acceso a un contenedor a uno de ellos, use la opción --cpus="1.0" . El comando para ejecutar un contenedor de Ubuntu con acceso a 1 CPU sería:

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

También puede utilizar --cpu-shares opción de darle al contenedor una mayor o menor proporción de ciclos de CPU. De forma predeterminada, está configurado en 1024 .

Para ejecutar un contenedor con menos recursos compartidos de CPU, ejecute:

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

Para encontrar más opciones para limitar el uso de la CPU del contenedor, consulte la documentación oficial de Docker.


Ubuntu
  1. Cómo limitar el uso de la CPU de un proceso en Linux

  2. ¿Cómo limitan las canalizaciones el uso de memoria?

  3. Cómo obtener el uso de la CPU

  4. Limite la memoria y la CPU con lxc-execute

  5. ¿Cómo limitar el uso de memoria por aplicación en Linux?

Cómo limitar el uso de la CPU con CPULimit en Ubuntu Linux

Cómo aumentar la memoria y la CPU en la máquina Vagrant

Cómo encontrar los 10 principales procesos en ejecución por memoria y uso de CPU

Cómo encontrar los principales procesos en ejecución por memoria y uso de CPU en Linux

Límite de memoria y límite de CPU en Docker Container

¿En qué se parecen el tiempo de CPU y el uso de CPU?