Использование памяти контейнера Docker

У меня есть изображение Docker Lamp. Я хочу запустить 500 контейнеров этого изображения, сколько оперативной памяти мне нужно? Я отслеживал использование памяти каждого нового контейнера и почти так же, как и любой другой контейнер своего изображения. Таким образом, если в одном контейнере используется 200 МБ, я могу запустить 5 контейнеров на машине Linux с 1 ГБ ОЗУ.

Мой вопрос:

Является ли контейнер-докер использующим такую ​​же память, как, например, тот же образ виртуальной машины? Может быть, я делаю что-то неправильно в конфигурации докеров или файлов докеров?

Ответ 1

Я не знаю точных деталей внутренней части докера, но общая идея заключается в том, что Docker пытается использовать его столько, сколько может. Поэтому, если вы запускаете пять одинаковых контейнеров, он должен работать намного быстрее, чем виртуальная машина, поскольку докер должен иметь только один экземпляр базового образа и файловой системы, на которые ссылаются все контейнеры. Любые изменения в файловой системе одного контейнера будут добавлены как верхний слой, только отмечая изменение. Основное изображение не будет изменено, поэтому пять контейнеров могут по-прежнему ссылаться на одно и то же одно базовое изображение.

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

Поэтому я не уверен, как вы можете точно определить, сколько памяти вам нужно, но это должно сделать концепцию понятной для вас. Вы можете запустить один контейнер, чтобы увидеть "базовую память", которая понадобится для одного, а затем каждый новый контейнер должен только добавить меньший постоянный объем памяти, и это должно дать вам общее представление о том, сколько вам нужно.