Middle
30
0
questionbank

Как осуществляется ограничение ресурсов в Docker?

Ответ от нейросети sobes.tech

Ограничение ресурсов в Docker реализуется через namespaces и control groups (cgroups) ядра Linux. Namespaces изолируют системные ресурсы, а cgroups ограничивают, учитывают и изолируют использование ресурсов для групп процессов.

Ключевые параметры для ограничения ресурсов:

  • CPU:
    • --cpu-shares: Весовое значение для распределения CPU между контейнерами, когда он ограничен. Значение по умолчанию 1024.
    • --cpu-quota: Максимальное количество времени CPU (в микросекундах) для использования в течение периода (--cpu-period). По умолчанию 100000.
    • --cpu-period: Период времени CPU (в микросекундах) для --cpu-quota.
    • --cpuset-cpus: Указывает, какие ядра CPU могут использовать контейнеры.
  • Memory:
    • --memory: Жесткий лимит по оперативной памяти. Если контейнер превышает этот лимит, он может быть завершен.
    • --memory-swap: Жесткий лимит по сумме оперативной памяти и swap.
    • --memory-reservation: Мягкий лимит по оперативной памяти. При ограничении ресурсов, контейнеры с меньшим reservation будут раньше вытеснены в swap, чем те, у кого memory-reservation больше.
    • --kernel-memory: Лимит по памяти ядра.
    • --memswap-swappiness: Насколько охотно ядро будет использовать swap для этого контейнера (от 0 до 100). 0 - очень неохотно, 100 - очень охотно.

Ограничение ресурсов в Docker реализуется через namespaces и control groups (cgroups) ядра Linux. Namespaces изолируют системные ресурсы, а cgroups ограничивают, учитывают и изолируют использование ресурсов для групп процессов.

Ключевые параметры для ограничения ресурсов:

  • CPU:
    • --cpu-shares: Весовое значение для распределения CPU между контейнерами, когда он ограничен. Значение по умолчанию 1024.
    • --cpu-quota: Максимальное количество времени CPU (в микросекундах) для использования в течение периода (--cpu-period). По умолчанию 100000.
    • --cpu-period: Период времени CPU (в микросекундах) для --cpu-quota.
    • --cpuset-cpus: Указывает, какие ядра CPU могут использовать контейнеры.
  • Memory:
    • --memory: Жесткий лимит по оперативной памяти. Если контейнер превышает этот лимит, он может быть завершен.
    • --memory-swap: Жесткий лимит по сумме оперативной памяти и swap.
    • --memory-reservation: Мягкий лимит по оперативной памяти. При ограничении ресурсов, контейнеры с меньшим reservation будут раньше вытеснены в swap, чем те, у кого memory-reservation больше.
    • --kernel-memory: Лимит по памяти ядра.
    • --memswap-swappiness: Насколько охотно ядро будет использовать swap для этого контейнера (от 0 до 100). 0 - очень неохотно, 100 - очень охотно.

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

dockerresource-limitscontainerizationcgroupcpu-limitsmemory-limitsresource-management