Cómo asignar más memoria al contenedor de la ventana acoplable

117

Como dice el título, estoy tratando de asignar más memoria a mi contenedor. Estoy usando una imagen de Docker Hub llamada "aallam / tomcat-mysql" en caso de que sea relevante.

Cuando lo inicio normalmente sin ningún indicador especial, hay un límite de memoria de 2 GB (aunque leí que la memoria no está limitada si no se establece)

Aquí están mis estadísticas de Docker

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
ba57d6c9e9d2        0.22%               145.6 MiB / 1.952 GiB   7.29%               508 B / 508 B       0 B / 6.91 MB       68

Intenté configurar la memoria explícitamente así pero con los mismos resultados

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql

He leído que quizás la VM es lo que lo restringe. Pero entonces, ¿por qué las estadísticas de Docker muestran que el límite de tamaño del contenedor es de 2 GB?

kane
fuente

Respuestas:

203

Ese 2GBlímite que ve es la memoria total de la VM en la que se ejecuta Docker.

Si está utilizando docker-for-windows o docker-for-mac, puede aumentarlo fácilmente desde el icono de Whale 🐳 en la barra de tareas, luego vaya a Preferencias -> Avanzado:

Preferencias de Docker

Pero si está usando VirtualBox detrás, abra VirtualBox, seleccione y configure la memoria asignada de la máquina acoplable.

Vea esto para Mac:

https://docs.docker.com/docker-for-mac/#memory

MEMORIA De forma predeterminada, Docker para Mac está configurado para usar 2 GB de memoria en tiempo de ejecución, asignados de la memoria total disponible en su Mac. Puede aumentar la RAM en la aplicación para obtener un rendimiento más rápido estableciendo este número más alto (por ejemplo, a 3) o más bajo (a 1) si desea que Docker para Mac use menos memoria.

Para ventanas:

https://docs.docker.com/docker-for-windows/#advanced

Memoria: cambie la cantidad de memoria que utiliza la máquina virtual Docker para Windows Linux

Robert
fuente
72
¿Cómo se hace sin la interfaz gráfica de usuario?
Philippe
13
@Philippe, ¿cuál es tu caso de uso? Docker para Windows o Docker para Mac viene con guli. Creo que su caso tiene Docker nativo sobre Linux (sin ninguna máquina virtual, que es el caso de los sistemas de producción / nube). En tales casos, no es necesario configurar la memoria de la máquina virtual porque Docker tiene la máquina perforadora para su uso.
Robert
10
Sí, lo descubrí más tarde. Entonces, si quiero que mi contenedor docker tenga> 4GB de RAM, ¿no necesito hacer nada si desarrollo en Linux?
Philippe
3
No es posible, principalmente porque no asigna memoria a los contenedores de la ventana acoplable, sino que limita la cantidad de memoria que puede usar un contenedor. Tenga en cuenta que la presente respuesta no se trata de asignar memoria a los contenedores, se trata de asignar memoria a la máquina virtual en la que se ejecuta Docker.
Robert
2
@SiddharthPant, la ventana acoplable que se ejecuta directamente en una caja de Linux utilizará la mayor cantidad de memoria disponible, por lo que no hay otro límite que no sea el físico.
Robert
21

Asigne el máximo de memoria a su máquina acoplable desde (preferencia de la ventana acoplable -> avance)

Captura de pantalla de la configuración avanzada: Captura de pantalla de la configuración avanzada.

Esto establecerá el límite máximo de consumo de la ventana acoplable mientras se ejecutan contenedores. Ahora ejecute su imagen en un nuevo contenedor con la bandera -m = 4g para 4 gigas de ram o más. p.ej

docker run -m=4g {imageID}

Recuerde aplicar los cambios de aumento del límite de ariete. Reinicie la ventana acoplable y verifique que el límite de RAM haya aumentado. Este puede ser uno de los factores por los que no ve el aumento del límite de RAM en los contenedores Docker.

Cola de mercado
fuente
17

Si desea cambiar el contenedor predeterminado y está utilizando Virtualbox, puede hacerlo a través de la línea de comandos / CLI:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start
destruir todo
fuente