Иногда нужно что-то быстро продебажить внутри контейнера: посмотреть процессы, сделать ping, проверить DNS или снять tcpdump. Но чаще всего внутри контейнера нет вообще ничего, кроме самого приложения.
В таких случаях идеально подходит специальный контейнер: Network-Multitool
Его также часто используют и в кубере - для отладки сетей, проверки маршрутов и соединений между подами.
▪️ Пример использования. Создадим контейнер с Nginx, где нет даже ps:
docker run --name nginx -d -p 8080:80 nginx
docker exec -it nginx bash
ps axf
bash: ps: command not found
Теперь подключаем Network-Multitool к тому же namespace, где работает контейнер Nginx:
docker run --rm -it \
--network=container:nginx \
--pid container:nginx \
wbitt/network-multitool:alpine-extra bash
Проверим процессы:
ps axf
PID TTY STAT TIME COMMAND
47 pts/0 Ss 0:00 bash
60 pts/0 R+ 0:00 \_ ps axf
1 ? Ss 0:00 nginx: master process nginx -g daemon off;
29 ? S 0:00 nginx: worker process
30 ? S 0:00 nginx: worker process
Теперь у вас есть все необходимое: ping, dig, curl, tcpdump, netcat, iftop, mysql, git, tshark и многое другое.
▪️ Варианты сборок
alpine-extra - расширенная версия (максимум инструментов, включая tshark, ab, postgresql-client, git и др.).
alpine-minimal - легкая сборка, только базовые сетевые утилиты.
#docker #debug
🧑💻 NetworkAdmin