Linux

/
/
Ограничение использования памяти в Docker

Ограничение использования памяти в Docker

По умолчанию docker-контейнеры не имеют ограничений по потреблению оперативной памяти сервера, что может привести к её дефициту из-за всего лишь одного контейнера.

Ограничение на использование памяти устанавливается через параметр LimitNOFILE, который расположен в файлах служб:

  • Для Docker в целом - /usr/lib/systemd/system/docker.service
  • Для каждого контейнера в отдельности - /usr/lib/systemd/system/containerd.service

Значение для параметра указывается в количестве файлов, например для ограничения количества файлов в каждом контейнере в 4096 файлов необходимо изменить параметр в файле /usr/lib/systemd/system/containerd.service:

LimitNOFILE=4096

Также вместо строгого лимита можно установить пару soft и hard ограничений:

LimitNOFILE=4096:6148

В этом случае, при достижении soft-лимита в 4096 файлов будут появляться предупреждения, однако процесс, при необходимости, сможет увеличить количество файлов до 6148, что является уже строгим ограничением.

После внесения изменений, перезагрузите службы:

systemctl deamon-relaod и 
systemctl stop containerd docker
systemctl start containerd docker