Как докер выделяет память процессу в контейнере?

Docker сначала инициализирует контейнер, а затем запускает нужную программу. Интересно, как докер управляет адресом памяти контейнера и программы в нем.


person Luba A    schedule 11.07.2018    source источник
comment
Какой адрес памяти?   -  person tkausl    schedule 11.07.2018
comment
Не знаю об адресах памяти, но читали ли вы это?   -  person Teemu Risikko    schedule 11.07.2018
comment
Это не так. Ядро ОС управляет размещением в памяти процессов, запущенных в контейнере.   -  person Henry    schedule 11.07.2018
comment
Итак, вы имеете в виду, что пространство памяти каждого процесса, работающего в контейнерах, выделяется и управляется ОС. Тогда почему мы не можем использовать команду ps, чтобы увидеть процесс? Или как контейнер в докере сообщает ОС, что есть процесс, необходимый для выделения памяти?   -  person Luba A    schedule 11.07.2018
comment
@ Генри прав, но вы можете определить память для каждого контейнера с помощью docker run -d -t --memory=512m   -  person Frodo    schedule 11.07.2018
comment
Эта статья: Что такое контейнер: пространства имен и cgroups от Джулии Эванс содержит несколько интересных вещей, которые могут вам помочь.   -  person tgogos    schedule 11.07.2018


Ответы (2)


Docker не выделяет память, это ОС управляет ресурсами, используемыми программами. Docker (внутренне) использует cgroups, которая является службой ядра. Причина, по которой команда ps (на хосте) не отображает процессы, запущенные в контейнере, заключается в том, что контейнеры работают в разных cgroups, которые изолированы друг от друга.

person farzad    schedule 11.07.2018

Вместо того, чтобы беспокоиться о памяти докера, вам нужно посмотреть на базовый хост (VM/экземпляр), на котором вы запускаете контейнер докера. Количество контейнеров определяется рядом факторов, в том числе тем, какое приложение работает в контейнере. См. здесь ограничения, с которыми вы можете столкнуться ">Существует ли максимальное количество контейнеров, работающих на хосте Docker?

person ephemeral972    schedule 11.07.2018