Docker имеет встроенные опции для контроля потребления ресурсов и защиты системы от перегрузки контейнерами. Два основных механизма — это --cpus для ограничения процессора и -m для ограничения памяти.
Используй флаг --cpus для ограничения использования процессора. Это значение представляет количество ядер процессора, которые может использовать контейнер. Например, --cpus=2 позволяет контейнеру использовать до 2 ядер процессора, а --cpus=0.5 ограничивает его половиной ядра.
Используй флаг -m для установки максимального объёма памяти в мегабайтах (M) или гигабайтах (G). Это жёсткое ограничение не даёт контейнеру использовать больше оперативной памяти, чем указано.
Следующая команда показывает, как применить оба ограничения одновременно:
docker run --cpus=3 -m 1024M <image_name>
Это создаёт контейнер, который:
Для более тонкого контроля обрати внимание на эти дополнительные опции:
--memory-swap — устанавливает лимит на суммарный объём памяти + swap--cpuset-cpus — указывает, какие конкретные ядра процессора использовать--memory-reservation — устанавливает мягкий лимит памяти, который срабатывает при нехватке памяти на хостеЭти ограничения ресурсов необходимы для продакшн-окружений, так как обеспечивают справедливое распределение ресурсов между контейнерами и поддерживают стабильность системы.
Флаг --cpus принимает дробные значения, поэтому --cpus=0.5 ограничит контейнер половиной одного ядра CPU.
Новый — ещё не проверен сообществом
Вы