Анализ процессов и использования ресурсов контейнера
На этом шаге вы научитесь проверять процессы, запущенные внутри контейнера, и отслеживать его потребление ресурсов. Это фундаментальный навык для отладки и понимания поведения вашего контейнеризированного приложения.
Ключевой особенностью контейнеров является изоляция процессов. С точки зрения хоста вы можете видеть, что происходит внутри контейнера, без необходимости выполнять команду exec. Команда docker top позволяет просматривать основные процессы контейнера.
Выполните следующую команду, чтобы увидеть процессы внутри вашего контейнера webserver:
docker top webserver
Вывод показывает мастер-процесс Nginx, запущенный от имени root, и его рабочие процессы, запущенные от имени systemd+ (системный пользователь для повышения безопасности). Обратите внимание, что существует несколько рабочих процессов, что типично для Nginx для эффективной обработки одновременных запросов.
UID PID PPID C STIME TTY TIME CMD
root 4098 4078 0 14:34 ? 00:00:00 nginx: master process nginx -g daemon off;
systemd+ 4161 4098 0 14:34 ? 00:00:00 nginx: worker process
systemd+ 4162 4098 0 14:34 ? 00:00:00 nginx: worker process
Далее давайте посмотрим на использование ресурсов контейнера. Команда docker stats предоставляет поток данных о ЦП, памяти, сети и вводе-выводе диска контейнера в реальном времени. Чтобы получить статичный снимок для этой лабораторной работы, мы будем использовать флаг --no-stream.
docker stats --no-stream webserver
Эта команда отобразит таблицу с текущими метриками ресурсов для контейнера webserver.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
bda2386621a1 webserver 0.00% 3.125MiB / 3.505GiB 0.09% 6.31kB / 1.27kB 0B / 12.3kB 3
Из этого вывода вы можете увидеть, что контейнер использует очень мало ЦП (0,00%), около 3,1 МиБ памяти из доступных 3,5 ГиБ системной памяти (0,09%) и имеет 3 запущенных процесса (мастер-процесс Nginx и 2 рабочих процесса). Эта информация жизненно важна для выявления узких мест в производительности или потенциальных утечек ресурсов в ваших приложениях.