¿Es posible controlar la cantidad de memoria a la que están limitados los contenedores individuales?
Por ejemplo, asigne 16 GB a Postgres, pero limite los contenedores de Rails a 4 GB. ¿Qué tipo de memoria mínima se debe asignar al host del servidor que ejecuta docker-machine, y es esto incluso posible?
Esta respuesta https://serverfault.com/a/645888/210752 indica que los contenedores asignarán memoria según sea necesario. Esta no ha sido mi experiencia en el entorno de desarrollo (por defecto, la máquina acoplable tenía asignados 2 GB).
Como se mencionó en la respuesta a la pregunta en su 2da Edición, los contenedores no son como las máquinas virtuales, ya que generalmente no reserva memoria para ellos como lo haría con las máquinas virtuales. Debido a que todos se ejecutan en el mismo sistema operativo, puede enviar memoria según sea necesario a diferentes procesos, como si no se estuvieran ejecutando en un contenedor. Es decir, la memoria se agrupa para todos los procesos, independientemente de los contenedores.
Lo que configuró en el ejemplo anterior con docker-machine fue el grupo de memoria total del host 'virtual'. En su caso de producción, serán los 128 GB completos (a menos que planee usar también docker-machine o VMs para segmentarlo).
Sin embargo, los contenedores también son una excelente manera de hacer uso de la cgroups funciones (grupos de control), que le permiten configurar la administración de recursos para todo un sistema de contenedores. Esto no le permite "reservar" memoria para un contenedor, sino que puede establecer límites superiores para toda la memoria de sus contenedores para que uno no consuma memoria que podría usarse para otros (en caso de una fuga o error, por ejemplo).
Con Docker, dependiendo del backend del contenedor utilizado, puede establecer límites de memoria básicos de la siguiente manera:
Al ejecutar el libcontainer predeterminado de docker, ejecutando los contenedores con el - m o -memoria opcion
Al ejecutar el proveedor LXC heredado, ejecute los contenedores con la opción LXC lxc.cgroup.cpuset.memoria=cantidad utilizada -- lxc-conf
@HopelessN00b no hay problema … Creo que la pregunta no estaba redactada tan bien al principio. He trabajado mucho con infraestructura, pero Docker es nuevo para mí. He ofrecido una recompensa … que tengáis un gran día!