¿Cómo evito que el servicio Docker utilice siempre toda la RAM asignada en mi host?

¿Cómo evito que el servicio Docker utilice siempre toda la RAM asignada en mi host?

El servicio Docker en Windows 10 parece utilizar siempre la cantidad máxima de memoria que se le permite asignar. Por ejemplo, cuando aumenté la memoria en la sección Recursos -> Avanzado de 2 GB a 8 GB e hice clic en "Aplicar y reiniciar", esto sucedió en el administrador de tareas:

ingrese la descripción de la imagen aquí

¿Cómo puedo hacer que Docker use memoria solo cuando la necesite cualquier contenedor en ejecución, en lugar de simplemente consumirla toda?

Actualmente no hay contenedores en ejecución, solo el servicio.

Respuesta1

Si bien Docker se diferencia de la virtualización completa de hardware, aún funciona de la misma manera y por las mismas razones.

Los hipervisores reservan la cantidad de memoria dada para que esta memoria esté disponible para ellos y los contenedores (o máquinas virtuales) cuando la requieran sin tener que solicitar esta memoria al sistema operativo.

La configuración que usted establece es específicamente para este propósito y se comporta precisamente de la manera que ha observado precisamente por este motivo. No es un error y cambiar su comportamiento es reescribir el comportamiento básico de Docker.

Entonces, no hay nada roto y las cosas se comportan como deberían.

Le recomiendo encarecidamente que lea sobre las reservas de memoria en Docker para comprender mejor cómo y por qué. Docker es un producto maduro y, supongo, está bien documentado.

Para "resolver" el problema que ha encontrado, instale más memoria o planifique con más cuidado sus necesidades de memoria Docker y use esta configuración tal como fue diseñada, no solo por capricho como lo está haciendo ahora.

Respuesta2

Ejecutar las versiones más recientes de Docker Desktop con el backend WSL2 resuelve este problema. No puedo dar muchos más detalles porque yo mismo no lo entiendo muy bien, pero instalé WSL2 y noté que Docker ahora asigna memoria dinámicamente.

Docker Desktop utiliza la función de asignación de memoria dinámica en WSL 2 para mejorar enormemente el consumo de recursos. Esto significa que Docker Desktop solo utiliza la cantidad requerida de recursos de CPU y memoria que necesita, al tiempo que permite que las tareas que consumen mucha memoria y CPU, como la creación de un contenedor, se ejecuten mucho más rápido.

Fuente:Backend de Docker Desktop WSL 2

información relacionada