Ответ
Это требуется для диагностики, когда нужно понять, как контейнер взаимодействует с хостовой системой. Есть два основных метода:
1. Запуск контейнера с пространством PID хоста (--pid=host).
Это самый прямой способ. Контейнер видит все процессы системы так, как если бы он был запущен прямо на хосте.
docker run --rm --pid=host alpine ps aux
Важно: Это серьезное ослабление изоляции. Используйте только для отладки в контролируемых средах, никогда в продакшене без крайней необходимости.
2. Монтирование хостовой директории /proc в контейнер.
Директория /proc в Linux — виртуальная файловая система, содержащая информацию о процессах. Смонтировав ее, контейнер может читать данные о хостовых процессах.
docker run --rm -v /proc:/host/proc:ro alpine ps -ef --pid 1
# Флаг :ro (read-only) важен для безопасности
Практический пример из опыта: При диагностике утечки памяти на хосте, которая, как подозревали, могла быть связана с Docker, я использовал команду внутри временного контейнера с --pid=host, чтобы сравнить вывод top или htop с хостовым и точно определить, принадлежат ли "прожорливые" процессы контейнерам или другому ПО на сервере.