Ограничение использования памяти в 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