Sobes.tech
Middle

Dockerде ресурстарды чектөө кандай жүргүзүлөт?

sobes.tech AI

AIден жооп

Docker-да ресурстарды чектөө Linux ядросунун namespaces жана control groups (cgroups) аркылуу ишке ашырылат. 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ко которулат.
    • --kernel-memory: Ядро эс тутумунун чеги.
    • --memswap-swappiness: Ядро бул контейнер үчүн swapты канчалык каалайт (0дан 100гө чейин). 0 - өтө аз каалайт, 100 - өтө каалайт.
  • Block I/O:
    • --blkio-weight: Контейнерлер арасында I/O бөлүштүрүү үчүн салмактык мааниси.
    • --blkio-weight-device: Атайын түзмөктөр үчүн салмактык мааниси.
    • --device-read-bps: Түзмөктөн окуу ылдамдыгына чектөө (байт/секундада).
    • --device-write-bps: Түзмөккө жазуу ылдамдыгына чектөө (байт/секундада).
    • --device-read-iops: Түзмөктөн окуу операцияларынын санына чектөө (операциялар/секундада).
    • --device-write-iops: Түзмөккө жазуу операцияларынын санына чектөө (операциялар/секундада).
  • Тармак:
    • Тармак ресурстарын чектөө docker run флагдары аркылуу түздөн-түз чектелбейт. Адатта, бул үчүн сырткы инструменттер колдонулат, мисалы, tc (traffic control), netem же оркестрация инструменттери (Kubernetes NetworkPolicy).

Колдонуу мисалдары:

# CPU Shares жана эс тутум чектөө менен контейнерди иштетүү
docker run -d --cpu-shares 512 --memory 512m alpine sleep infinity

# Катуу CPU Quota жана эс тутум чектөө менен контейнерди иштетүү
docker run -d --cpu-quota 50000 --memory 1g alpine sleep infinity

Docker бул флагдарды контейнер ичинде иштетилген процесстер тобуна тиешелүү cgroups жөндөөлөрүнө айлантат. Бул жөндөөлөр /sys/fs/cgroup виртуалдык файл системеси аркылуу (монтирлөө учурунда) жана хост системеде көзөмөлдөнөт.