2015-05-16 3 views
2

Я хочу запускать несколько контейнеров на одном хосте, предоставляя ограничения на CPU & Память. Если мой хост имеет 1024 cpu share &, я назначаю их как 512 & 512 в два контейнера, это означает, что первый контейнер может принимать до 1024, если второй контейнер не использует какой-либо процессор. Но если оба они используют cpu, то оба ограничены до 512.Расход памяти также динамический, как и процессор для контейнеров Docker

Это также верно для использования памяти? Или как-нибудь я могу это сделать? Вот сценарий: У меня есть 1024 Мб ОЗУ для контейнеров, и у меня есть два контейнера, я хочу, чтобы каждый из них занимал 512 Мб ОЗУ, но должен иметь возможность расширения до более чем 512, если другой контейнер его не использует. Как это возможно?

ответ

1

В случае памяти вы предоставляете Docker фиксированный объем памяти (и своп) в байтах, килобайтах, мегабайтах, ... и эта сумма ограничивает память, которую может выделять контейнер, независимо от того, имеет свободную память или если он используется другим процессом.

При ограничении памяти важно следить за тем, как докеры (или группы) ограничивают память и своп контейнера. От Docker v1.5 (и исправлено в версии 1.6) Docker позволяет ограничить память и свопиться независимо. Проверьте Docker documentation, чтобы узнать больше об этом.

+0

Означает ли это, что контейнер с пределом памяти 512 МБ может фактически потреблять 800 МБ в случае, если он доступен? – Himanshu

+1

Если вы запустите 'docker run ... -m 512m ...' максимальный объем используемой памяти, то этот контейнер будет 512Mb, и если вы не укажете опцию '--memory-swap', это позволит вам используйте еще 512 Мбайт свопа (если ваша хост-система имеет своп). Запуск 'docker run ... -m 512m --memory-swap = 512m ...' позволит контейнеру использовать 512 Мб оперативной памяти и без дополнительной замены ... Но эти ограничения исправлены неважно, если хост-машина не работает и имеет свободные ресурсы. –

Смежные вопросы