DEV Community

Cover image for ¿Cómo manejar los recursos físicos a los que tienen acceso nuestros contenedores?
Nahuel Segovia
Nahuel Segovia

Posted on

¿Cómo manejar los recursos físicos a los que tienen acceso nuestros contenedores?

Podemos especificarle a Docker que cantidad de memoria RAM y núcleos del CPU pueden utilizar con una subsección en la parte del servicio lamada Deploy, esta especificación nos permite definir algunos requerimientos para el contexto de ejecución de nuestro contenedor/servicio, es decir cuando el contenedor ya está corriendo.

Entre las opciones que nos deja configurar esta funcionalidad está la parte de Resources que nos ayuda a manejar las restricciones de recursos físicos a los que va a tener acceso el contenedor una vez que esté en ejecución.

Entonces, adentro de la configuración de Resources tenemos dos campos que son siempre opcionales:

  • Limits
    • Como su nombre lo especifica, nos permite establecer un límite de memoria ram y nucleos del cpu para el contenedor
  • Reservations
    • También muy descriptivo, nos da la posibilidad de reservar espacio de manera exclusiva para la memoria RAM y núcleos del CPU

Ahora miremos un ejemplo concreto y sencillo:

version: '3.8'

services:
  web:
    build: .
    volumes:
      - .:/code
    ports:
      - "8081:80"
    command: "python3 manage.py runserver 0.0.0.0:80"
    deploy:
        resources:
            limits: #Definiendo el límite de acceso a memoria RAM y núcleos CPU
              cpus: 0.50
              memory: 512M
            reservations: #Reservando espacio de memoria RAM y núcelos del CPU
              cpus: 0.25
              memory: 128M 

  database:
    image: postgres:14.1-alpine
    restart: always
    environment:
      POSTGRES_DB: dockerized
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      PG_SYSTEM_MAX_CONNECTIONS: 500
    ports:
      - '5432:5432'
    volumes: 
      - database:/var/lib/postgresql/data

volumes:
  database:
Enter fullscreen mode Exit fullscreen mode

Ahora sí, con el comando stats, que nos sirve para inspeccionar en tiempo real la información de los contenedores que están en ejecución, vamos a comprobar que todo este funcionando como lo especificamos:

docker stats
Enter fullscreen mode Exit fullscreen mode

Image description

Top comments (0)