Skip to main content

Docker — Мониторинг и использование ресурсов

Эта страница объясняет, как отслеживать использование ресурсов Docker и как управлять дисковым пространством, занятым контейнерами, образами и volumes. Здесь разобраны команды для просмотра нагрузки на CPU и память, анализа использования диска, а также безопасной очистки неиспользуемых ресурсов. Материал ориентирован на начинающих и помогает понять, почему Docker может занимать много места на диске или ресурсов системы и как это контролировать.


Почему важно следить за ресурсами Docker

Docker активно использует ресурсы системы:

  • CPU
  • оперативную память (RAM)
  • дисковое пространство
  • сетевые ресурсы

Со временем на сервере могут накапливаться:

  • старые контейнеры
  • неиспользуемые образы
  • volumes с данными
  • временные слои сборки

Если их не очищать, Docker может занять десятки или даже сотни гигабайт дискового пространства.

Поэтому регулярный мониторинг и очистка — важная часть администрирования Docker.


Просмотр нагрузки контейнеров

Просмотр использования ресурсов в реальном времени

docker stats

Эта команда показывает статистику всех работающих контейнеров.

Пример вывода:

CONTAINER ID   NAME            CPU %   MEM USAGE / LIMIT   MEM %   NET I/O
a12bc34d       project_php     2.5%    120MiB / 2GiB       5.8%    1.2MB / 500KB
b45de67f       project_nginx   0.2%    15MiB / 2GiB        0.7%    200KB / 100KB

Что показывает эта команда

Поле Описание
CPU % загрузка процессора контейнером
MEM USAGE используемая память
MEM % процент от доступной памяти
NET I/O сетевой трафик

Когда использовать

Полезно, если:

  • сервер начал тормозить
  • приложение потребляет слишком много ресурсов
  • нужно найти контейнер с высокой нагрузкой

Проверка ресурсов одного контейнера

docker stats --no-stream <container>

Флаг --no-stream выводит статистику один раз, без постоянного обновления.

Пример:

docker stats --no-stream project_php

Это удобно, если нужно быстро проверить текущую нагрузку.


Проверка процессов внутри контейнера

Иногда нагрузку создаёт конкретный процесс.

Можно посмотреть процессы внутри контейнера:

docker compose top <service>

Пример:

docker compose top php

Вывод покажет процессы, которые выполняются внутри контейнера.

Это помогает определить, что именно создаёт нагрузку:

  • веб-сервер
  • PHP-процесс
  • worker
  • cron-задача

Проверка использования диска Docker

Посмотреть сколько места занимает Docker

docker system df

Пример вывода:

TYPE            TOTAL     ACTIVE    SIZE
Images          12        4         3.2GB
Containers      8         4         120MB
Local Volumes   6         5         5.6GB
Build Cache     -         -         2.1GB

Что означает каждая строка

Тип Описание
Images Docker-образы
Containers контейнеры
Volumes постоянные данные
Build Cache кэш сборки Docker

Когда использовать

Эта команда помогает понять:

  • почему Docker занимает много места
  • какие ресурсы занимают больше всего диска

Подробная информация об использовании диска

docker system df -v

Флаг -v (verbose) показывает более подробную информацию:

  • какие именно образы занимают место
  • какие контейнеры используют volumes
  • какие слои можно удалить

Очистка неиспользуемых ресурсов

Со временем Docker оставляет множество временных объектов:

  • остановленные контейнеры
  • старые образы
  • временные сети
  • build cache

Их можно безопасно удалить.


Удаление неиспользуемых образов

docker image prune -f

Удаляет dangling images — образы, которые больше не используются контейнерами.

Когда использовать

Если после сборок осталось много старых образов.


Полная очистка Docker

docker system prune -f

Удаляет:

  • остановленные контейнеры
  • неиспользуемые сети
  • dangling images
  • build cache

Важно понимать

Эта команда не удаляет volumes.

То есть:

  • базы данных
  • файлы проекта
  • persistent storage

останутся на месте.


Очистка volumes

docker volume prune -f

Удаляет неиспользуемые volumes.

Осторожно

Volumes могут содержать:

  • базы данных
  • пользовательские файлы
  • кэш приложения

Поэтому перед удалением нужно убедиться, что volume действительно не используется.


Очистка сетей

docker network prune -f

Удаляет неиспользуемые Docker-сети.

Эта команда безопасна, потому что:

  • сети удаляются только если они не используются контейнерами

Проверка ресурсов Docker Engine

Иногда полезно посмотреть информацию о самой Docker-системе.


Проверка доступной памяти

docker info | grep -i memory

Показывает информацию о памяти, доступной Docker.


Проверка CPU

docker info | grep -i cpu

Показывает количество доступных CPU.


Проверка лимитов контейнера

Некоторые контейнеры могут иметь ограничения по памяти.

Проверить это можно так:

docker inspect <container> | grep -i memory

Пример:

docker inspect project_php | grep -i memory

Эта команда покажет:

  • лимит памяти
  • настройки использования RAM

Типичные проблемы с ресурсами

Docker занимает слишком много места

Самая частая причина — накопившиеся:

  • старые образы
  • build cache
  • остановленные контейнеры

Решение:

docker system prune -f

Заполнен диск сервера

Проверить использование:

docker system df

Затем очистить ненужные данные.


Контейнер использует слишком много CPU

Найти контейнер:

docker stats

После этого:

  • проверить логи
  • посмотреть процессы внутри контейнера

Контейнер использует слишком много памяти

Возможные причины:

  • утечка памяти
  • неправильная конфигурация приложения
  • слишком большие кэши

Проверить:

docker stats

Рекомендуемая регулярная очистка

На серверах разработки полезно периодически выполнять:

docker system prune -f

Если используется активная сборка образов:

docker builder prune -f

Типичный сценарий диагностики

Если сервер начал тормозить:

1 Проверить контейнеры

docker stats

2 Проверить диск

docker system df

3 Очистить ненужные данные

docker system prune -f

4 Проверить снова

docker system df

Краткая памятка

docker stats                         # нагрузка контейнеров в реальном времени
docker stats --no-stream <container> # разовая статистика

docker compose top <service>         # процессы внутри контейнера

docker system df                     # использование диска Docker
docker system df -v                  # подробная информация

docker image prune -f                # удалить неиспользуемые образы
docker system prune -f               # очистка контейнеров, сетей и cache
docker volume prune -f               # удалить неиспользуемые volumes
docker network prune -f              # удалить неиспользуемые сети

docker info | grep -i memory         # информация о памяти
docker info | grep -i cpu            # информация о CPU
docker inspect <container> | grep -i memory   # лимиты контейнера