Limite de Memoria en Docker

Cuando creamos un nuevo contenedor, el mismo tiene acceso ilimitado a los recursos del sistema, así que si uno ocupa toda la memoria los demás contenedores serán afectados o en su defecto el sistema operativo se queda sin recursos.

Docker tiene la posibilidad de aplicar un límite de memoria a un contenedor específico.

Creando un Contenedor

1$ docker run --name dell -it debian bash

Obteniendo Información del Contenedor

1$ docker inspect dell | grep -i 'Memory'

Para "Memory": 0 el valor 0 indica que el contenedor no tiene valor limitado de memoria, es decir que utilizará todo lo que tenga disponible el host, posiblemente afectando a otros contenedores que estén dentro del mismo host.

Actualizando la Memoria del Contenedor

1$ docker update -m 256MB dell

En las pruebas existieron problemas en sistemas operativos Debian y Ubuntu:

Este problema se debe a que el cgroup no esta montado en el sistema, para que se monte editamos el archivo archivo grub.

1$ sudo vim /etc/default/grub
2    ...
3    GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
4    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
5    ...

Actualizamos el grub y reiniciamos el sistema:

1$ sudo update-grub
2$ sudo update-grub2
3$ sudo reboot

Por último volvemos a ejecutar el comando para actualizar la memoria y verificamos el estado de la memoria:

Referencias

Traducciones: