Ответ
Есть несколько способов, в зависимости от того, нужен ли разовый просмотр или постоянный мониторинг.
1. Основные команды для разовой проверки:
# 1. Использование docker exec для запуска ps внутри контейнера
$ docker exec <container_name_or_id> ps aux
# 2. Команда docker top (не требует входа в контейнер)
$ docker top <container_name_or_id>
# Выводит PID, пользователя, время и команду для всех процессов контейнера на хосте.
# 3. Для контейнеров на основе Alpine Linux (где ps может отсутствовать)
$ docker exec <container_name> sh -c "apk add procps && ps aux" # Установить и запустить
# Или использовать встроенный `top`:
$ docker exec -it <container_name> top
2. Просмотр информации о ресурсах процессов:
# Показать потребление памяти и CPU процессами в контейнере
$ docker stats <container_name>
# Детальная информация о контейнере (включая PID основного процесса на хосте)
$ docker inspect <container_name> | grep -A 5 -B 5 "Pid"
3. Для отладки и мониторинга в продакшене:
- Логирование stdout/stderr процессов:
docker logs --tail 50 -f <container_name> - Использование инструментов мониторинга: Настраиваю сбор метрик контейнеров (CPU, memory, I/O) через cAdvisor или агенты Docker-оркестратора (Kubernetes, Swarm).
- Профилирование производительности: Для глубокого анализа можно использовать
docker execдля запуска профилировщиков (например,perfили language-specific tools) внутри контейнера, предварительно убедившись, что они установлены.