Middle
¿Cómo se limita el uso de recursos en Docker?
sobes.tech AI
Respuesta de la IA
La limitación de recursos en Docker se implementa a través de namespaces y control groups (cgroups) del núcleo Linux. Los namespaces aíslan los recursos del sistema, y los cgroups limitan, contabilizan y aíslan el uso de recursos para grupos de procesos.
Parámetros clave para limitar recursos:
- CPU:
--cpu-shares: Valor ponderado para distribuir CPU entre contenedores cuando está limitado. Valor predeterminado 1024.--cpu-quota: Cantidad máxima de tiempo de CPU (en microsegundos) para usar durante el período (--cpu-period). Por defecto 100000.--cpu-period: Período de tiempo de CPU (en microsegundos) para--cpu-quota.--cpuset-cpus: Indica qué núcleos de CPU pueden usar los contenedores.
- Memoria:
--memory: Límite rígido de memoria RAM. Si el contenedor lo excede, puede ser finalizado.--memory-swap: Límite rígido en la suma de memoria RAM y swap.--memory-reservation: Límite suave de memoria RAM. Cuando se limitan recursos, los contenedores con menor reserva serán desplazados primero al swap que aquellos con mayormemory-reservation.--kernel-memory: Límite de memoria del núcleo.--memswap-swappiness: Qué tan dispuesto está el núcleo a usar swap para este contenedor (de 0 a 100). 0 - muy poco dispuesto, 100 - muy dispuesto.
- Entrada/Salida de bloques:
--blkio-weight: Valor ponderado para distribuir I/O entre contenedores.--blkio-weight-device: Valor ponderado para un dispositivo de bloque específico.--device-read-bps: Límite en la velocidad de lectura del dispositivo (bytes por segundo).--device-write-bps: Límite en la velocidad de escritura en el dispositivo (bytes por segundo).--device-read-iops: Límite en el número de operaciones de lectura del dispositivo (operaciones por segundo).--device-write-iops: Límite en el número de operaciones de escritura en el dispositivo (operaciones por segundo).
- Red:
- La limitación de recursos de red directamente a través de las banderas
docker runestá limitada. Normalmente, se utilizan herramientas externas, comotc(control de tráfico), netem o herramientas de orquestación (Kubernetes NetworkPolicy).
- La limitación de recursos de red directamente a través de las banderas
Ejemplos de uso:
# Ejecutar un contenedor con limitación de CPU Shares y memoria
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity
# Ejecutar un contenedor con límite rígido de CPU Quota y Memoria
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity
Docker convierte estas banderas en configuraciones cgroups correspondientes para el grupo de procesos que se ejecuta dentro del contenedor. Estas configuraciones se gestionan a través del sistema de archivos virtual /sys/fs/cgroup dentro del contenedor (al montarlo) y en el sistema host.