Limitar ancho de banda en Docker (Método Wondershaper 2017)
Aprende cómo limitar el ancho de banda en contenedores Docker utilizando la herramienta 'wondershaper'. Este método afecta a la interfaz de red bridge del host.
⚠️ Advertencia Importante (Contexto Histórico)
Este método utiliza wondershaper para limitar el ancho de banda de la interfaz bridge de Docker en el host. Esto limita el tráfico de T-O-D-O-S los contenedores que utilizan esa red, no solo uno. Las versiones modernas de Docker suelen ofrecer métodos más granulares y directos (a través de la definición de la red en Compose) para limitar contenedores individuales.
¿Qué es wondershaper?
wondershaper es un shell script que configura la disciplina de tráfico de red (tc). Se utiliza principalmente para limitar el ancho de banda de subida y descarga de una interfaz específica.
Instalar wondershaper
1. Actualizar la base de datos de paquetes
sudo apt-get update
2. Instalar paquete wondershaper
sudo apt-get install wondershaper
Localizamos la red que está usando el contenedor
Para limitar la red correctamente, necesitamos identificar la interfaz bridge que está usando nuestro contenedor en el host (servidor).
1. Inspeccionar el contenedor o la red: Primero, obtenemos la configuración de red y la Gateway del contenedor que queremos limitar:
docker inspect nombre_contenedor
# O si se usa Docker Compose:
docker inspect nombre_red
2. Identificar la Interfaz Bridge:
Ahora visualizamos las interfaces de red creadas en el sistema para encontrar la que coincide con el rango de red (Gateway) del contenedor. Usaremos ip a (el comando moderno, preferido a ifconfig).
ip a
# Alternativamente, usar el comando obsoleto pero común en 16.04:
# ifconfig
Vemos que hay una interfaz en el mismo rango que la red del contenedor.
Aplicar la Limitación
Una vez identificada la interfaz (ejemplo: docker0 o br-abcdef1234), limitamos su ancho de banda usando wondershaper.
# Sintaxis: wondershaper [nombre_interfaz] [kbps/descarga] [kbps/subida]
wondershaper nombre_interfaz 5000 1000
(Esto limitaría el tráfico en la interfaz especificada a 5000 kbps de descarga y 1000 kbps de subida para todos los contenedores que la usen).
Eliminar la Restricción
Para eliminar la restricción de ancho de banda y devolver la interfaz a la velocidad máxima:
wondershaper clear nombre_interfaz