Limitar la memoria RAM, CPU o espacio en disco para los contenedores Docker usando Docker Compose

Tiempo de lectura: 3 minutos

En Docker Compose, puedes limitar la memoria RAM, el espacio en disco y el uso de la CPU de los contenedores para evitar que consuman demasiados recursos en el sistema.

Aquí te dejo un tutorial para limitar la memoria RAM, el espacio en disco y la CPU de contenedores Docker Compose.

Paso 1: Crear el archivo docker-compose.yml


Primero, debes crear el archivo docker-compose.yml en el directorio raíz de tu proyecto. Este archivo define los servicios y las configuraciones para tus contenedores.

Paso 2: Definir los servicios


En el archivo docker-compose.yml, define los servicios que necesitas para tu proyecto. Por ejemplo:

version: '3'
services:
  app:
    build: .
    image: my-app
    container_name: my-app
    restart: always

En este ejemplo, se define un servicio llamado app.

Este servicio se construirá a partir del Dockerfile ubicado en el directorio actual (.), se etiquetará con el nombre de la imagen my-app, y se reiniciará siempre que falle.

Paso 3: Limitar la memoria RAM


Para limitar la memoria RAM de un contenedor, usa la opción mem_limit. Por ejemplo:

version: '3'
services:
  app:
    build: .
    image: my-app
    container_name: my-app
    restart: always
    mem_limit: 1g

En este ejemplo, se limita la memoria RAM del contenedor a 1 GB.

Paso 4: Limitar el espacio en disco


Para limitar el espacio en disco de un contenedor, usa la opción storage_opt. Por ejemplo:

version: '3'
services:
  app:
    build: .
    image: my-app
    container_name: my-app
    restart: always
    mem_limit: 1g
    storage_opt:
      size: 1g

En este ejemplo, se limita el espacio en disco del contenedor a 1 GB.

Paso 5: Limitar el uso de CPU


Para limitar el uso de CPU de un contenedor, usa la opción cpus. Por ejemplo:

version: '3'
services:
  app:
    build: .
    image: my-app
    container_name: my-app
    restart: always
    mem_limit: 1g
    storage_opt:
      size: 1g
    cpus: 0.5

En este ejemplo, se limita el uso de CPU del contenedor al 50%.

Paso 6: Ejecutar los contenedores


Para ejecutar los contenedores con las limitaciones definidas, utiliza el siguiente comando:

docker-compose up -d

Este comando inicia todos los servicios definidos en el archivo docker-compose.yml y los ejecuta en segundo plano (-d).

Con estos pasos ya podrás limitar la memoria RAM, el espacio en disco y el uso de CPU de tus contenedores Docker Compose.

Paso 7: Mostrar recursos utilizados

Puedes ver la cantidad de recursos que usa Docker Compose con el comando docker stats. Este comando muestra las estadísticas en tiempo real de todos los contenedores en ejecución, incluyendo el uso de CPU, memoria y E/S.

Para utilizar docker stats con Docker Compose, simplemente ejecuta el comando en el terminal:

docker stats

Esto mostrará las estadísticas de todos los contenedores en ejecución en el sistema. Si deseas limitar la salida a un conjunto específico de contenedores, puedes especificar los nombres de los contenedores como argumentos al comando docker stats.

Por ejemplo, si tienes un servicio llamado «app» en tu archivo docker-compose.yml, puedes ver las estadísticas solo para ese servicio con el siguiente comando

docker stats app

También puedes usar la opción --format para especificar el formato de salida. Por ejemplo, para mostrar solo el nombre del contenedor y el uso de memoria, puedes usar el siguiente comando:

docker stats --format "table {{.Name}}\t{{.MemUsage}}"

Esto mostrará una tabla con el nombre del contenedor y el uso de memoria para cada contenedor en ejecución.

En resumen, puedes utilizar el comando docker stats para ver las estadísticas en tiempo real de los contenedores en ejecución, y puedes limitar la salida a un conjunto específico de contenedores con los argumentos del nombre del contenedor. También puedes usar la opción --format para personalizar el formato de salida.

Deja un comentario