Sobes.tech
Junior — Middle

Πώς διακρίνουμε τους φυσικούς πόρους του συστήματος-υποδοχής από τους πόρους που έχουν εκχωρηθεί σε ένα κοντέινερ στο Docker;

sobes.tech AI

Απάντηση από AI

В Docker контейнеры работают поверх ядра хост-системы, используя её физические ресурсы (CPU, память, диск, сеть). Однако контейнеры могут иметь ограничение на использование ресурсов, заданное при их запуске.

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

  • Физические ресурсы хоста — это реальные характеристики оборудования: количество ядер CPU, общий объём оперативной памяти, дисковое пространство.
  • Ресурсы контейнера — это ограничения, наложенные на контейнер через параметры Docker, например:
    • --cpus или --cpu-quota для ограничения CPU
    • --memory для ограничения оперативной памяти

Пример: если на хосте 16 ГБ RAM, а контейнер запущен с --memory=2g, то контейнеру доступно максимум 2 ГБ памяти, хотя физически доступно 16 ГБ.

Для проверки ресурсов контейнера можно использовать команду:

docker stats <container_id>

Она покажет текущие потребление CPU и памяти контейнером.

Также внутри контейнера можно посмотреть лимиты через cgroups, например:

cat /sys/fs/cgroup/memory/memory.limit_in_bytes

Таким образом, физические ресурсы — это возможности хоста, а ресурсы контейнера — это ограниченные квоты, которые Docker накладывает для изоляции и управления.