Как отличить физические ресурсы хост-системы от ресурсов, выделенных контейнеру в Docker?
Answer from AI
sobes.tech 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 накладывает для изоляции и управления.