É possível controlar a quantidade de memória a que os contêineres individuais estão limitados?
Por exemplo, aloque 16GB para Postgres, mas limite os contêineres Rails para 4GB. Que tipo de memória mínima deve ser alocada para o host do servidor executando o docker-machine,e isso é possível?
Resposta https://serverfault.com/a/645888/210752 indica que os contêineres alocarão memória conforme necessário. Esta não foi minha experiência no ambiente de desenvolvimento (por padrão, o docker-machine foi alocado 2GB).
Como mencionado na resposta à pergunta em sua 2ª edição, os contêineres não são como VMs, pois você geralmente não reserva memória para eles como faria com máquinas virtuais. Como todos eles são executados no mesmo sistema operacional, ele pode despachar a memória conforme necessário para processos diferentes, como se não estivessem sendo executados em um contêiner. Ou seja, a memória é agrupada para todos os processos, independentemente dos contêineres.
O que você definiu no exemplo acima com docker-machine foi o pool de memória total do host' virtual'. No seu caso de produção, serão 128 GB (a menos que você planeje também usar docker-machine ou VMs para segmentá-lo).
No entanto, os contêineres também são uma ótima maneira de fazer uso do kernel cgroups (grupos de Controle) recursos, que permite configurar o gerenciamento de recursos para um sistema de contêiner inteiro. Isso não permite que você' reserve ' a memória em um contêiner, mas, em vez disso, você pode definir limites superiores para toda a memória de seus contêineres para que não consuma memória que possa ser usada para outras pessoas (no caso de um vazamento ou bug, por exemplo).
Com o Docker, dependendo do back-end do contêiner usado, você pode definir limites básicos de memória da seguinte forma:
Ao executar o libcontainer padrão do docker, executando os contêineres com o -m ou -memoria Opcao
Ao executar o provedor LXC legado, executando os contêineres com a opção LXC lxc.cgroup.cpuset.memoria= quantidade usando -- lxc-conf
@ HopelessN00b não há problema … Acho que a questão não foi formulada tão bem no início. Eu trabalhei muito com infraestrutura, mas o Docker é novo para mim. Fiz uma recompensa … tenha um ótimo dia!