👁 В проде бывает ситуация: контейнер работает, но внутри что-то странно себя ведёт — тормозит сервис, завис процесс или непонятно, что происходит с файлами. Перезапускать контейнер нельзя, потому что это боевой сервис. В таких случаях можно зайти внутрь контейнера и анализировать систему прямо на лету.
📝 Подключение к работающему контейнеру для диагностики
Самый простой способ посмотреть, что происходит внутри — подключиться к контейнеру через docker exec. Это позволяет запустить shell и проверить процессы, файлы и сеть.
docker exec -it my_container sh ps aux df -h netstat -tulpn
Так можно быстро понять, какие процессы работают, что происходит с диском и какие порты реально слушает приложение.
📝 Подключение к namespace контейнера через nsenter
Если внутри контейнера нет нужных утилит (что часто бывает в минимальных образах), можно зайти в его namespace прямо с хоста.
PID=$(docker inspect --format '{{.State.Pid}}' my_container)
sudo nsenter -t $PID -n -p -m -u -iТеперь ты оказываешься в том же сетевом, файловом и процессном пространстве, что и контейнер, но со всеми инструментами хоста.
❗️ Такой подход позволяет дебажить контейнеры без пересборки образа и без остановки сервиса — что часто критично в продакшене.
tags: #docker #полезно




nsenter -t $PID -a