👁 Иногда приложение в контейнере отказывается запускаться или умирает сразу после старта, и обычный docker exec не помогает — просто не успеваешь подключиться. Или контейнер вообще не доходит до точки, где ты мог бы зайти внутрь. В таких случаях пригодится нестандартный способ — зайти в контейнер через пространства имён ядра с помощью nsenter.
📝 Что делаем:
Запускаем контейнер с доступом к PID пространства хоста:
docker run -d --pid=host --name myapp myimage
Находим PID нужного процесса (или контейнера через
docker inspect).Используем
nsenter, чтобы «нырнуть» в его окружение:PID=$(docker inspect --format '{{.State.Pid}}' myapp)nsenter -t $PID -m -u -i -n -p bash
Теперь ты буквально внутри контейнера, даже если тот висит, умирает или работает в обрезанном окружении. Можно смотреть файловую систему, процессы, конфиги — всё, что иначе было бы недоступно.
🔎 Это особенно полезно:
- При отладке init-контейнеров и sidecar-процессов
- Если ты используешь
alpine-образы безbash,ps,top - Когда стандартные инструменты логирования не успевают собрать инфу
- При изучении namespaces и безопасности контейнеров
❗️ Комбо --pid=host + nsenter — мощный инструмент для дебага, и он часто оказывается последним шансом, когда всё остальное уже не работает.
tags: #docker #troubleshooting #полезно
❤️ @recura_tech



