Как быстро найти «тяжёлые» контейнеры на хосте

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

dockerконтейнерымониторинг

ℹ️ Когда у вас на сервере работает множество контейнеров, бывает трудно быстро понять, какие из них потребляют больше всего ресурсов (CPU, RAM, диск). Стандартная команда docker stats выводит статистику в реальном времени, но часто нужен более простой и быстрый способ получить сводку.

  1. 1. Поиск контейнеров с наибольшим использованием CPU

    docker stats --no-stream --format "{{.Container}} {{.Name}} {{.CPUPerc}}" | sort -k3 -h
    • --no-stream — выводит статистику только один раз.
    • --format — задаёт формат вывода с отображением ID контейнера, имени и использования CPU.
    • sort -k3 -h — сортирует по третьему столбцу (CPU), используя числовой порядок с учётом суффиксов (например, %).

    ℹ️ Результат: Список контейнеров, отсортированный по возрастанию использования CPU. Последние строки — самые «тяжёлые».

  2. 2. Поиск контейнеров с наибольшим использованием памяти

    docker stats --no-stream --format "{{.Container}} {{.Name}} {{.MemUsage}}" | sort -k3 -h

    ❔ Здесь MemUsage выводит текущее потребление памяти в виде XMiB / YMiB. Вы можете использовать awk для выделения только текущего значения:

    docker stats --no-stream --format "{{.Container}} {{.Name}} {{.MemUsage}}" | awk '{print $1, $2, $3}' | sort -k3 -h
  3. 3. Поиск контейнеров с наибольшим количеством запущенных процессов

    for id in $(docker ps -q); do
        echo "$(docker exec $id ps aux | wc -l) processes in container $id"
    done | sort -n

    ❕ Команда выводит количество процессов в каждом контейнере. А sort -n сортирует список по количеству процессов.

  4. 4. Быстрое определение размера образов контейнеров

    Если нужно найти образы, которые занимают больше всего места:

    docker image ls --format "{{.Repository}}:{{.Tag}} {{.Size}}" | sort -k2 -h

✳️ Применяя эти трюки, вы сможете сэкономить время и быстро получать нужную информацию о контейнерах даже в нагруженных продакшн-средах.

tags: #полезно #docker #мониторинг

🧭 @recura_tech

Иллюстративная цветная графика: серверные стойки и виртуальные контейнеры на фоне графиков загрузки CPU и памяти с иконкой облака, визуализация мониторинга.
Схематичное изображение серверов и графиков загрузки — иллюстрация для темы мониторинга контейнеров.

Читайте так же