tgoop.com/srv_admin/2403
Last Update:
При работе с Docker контейнерами часто хочется зайти туда и посмотреть, что происходит. Но не всегда это возможно. В некоторых контейнерах нет вообще ничего - ни оболочки, ни утилит для диагностики.
Для решения этой задачи создана программа cdebug. С её помощью можно подцепиться к контейнеру и выполнить диагностику. Например, запустить там ps axf
и посмотреть, что и с какими параметрами запущено. Либо любую другую утилиту - ls, top, awk и т.д.
Для работы с cdebug достаточно скачать один бинарник, написанный на GO. Идём в релизы и скачиваем для Linux архив cdebug_linux_amd64.tar.gz. Далее покажу на примере контейнера nginx. # docker run --name nginx -d -p 8080:80 nginx
# docker exec -it nginx bash
# ps axf
bash: ps: command not found
В образе нет ps. Подключаемся через cdebug:# cdebug exec -it nginx
# ps axf
PID USER TIME COMMAND
1 root 0:00 nginx: master process nginx -g daemon off;
28 nginx 0:00 nginx: worker process
29 nginx 0:00 nginx: worker process
30 nginx 0:00 nginx: worker process
31 nginx 0:00 nginx: worker process
39 root 0:00 sh /.cdebug-entrypoint.sh
47 root 0:00 sh
48 root 0:00 ps axf
Посмотрели список процессов. При этом исходный контейнер не перезапускается, к нему не подключаются никакие volumes, корневая файловая система cdebug та же самая, что и у контейнера. Работает cdebug на базе busybox.
Кроме подключения к контейнеру, cdebug может на ходу опубликовать порты контейнера, которые не были опубликованы при запуске. Принцип работы программы описан в репозитории, но если честно, я не очень понял полную реализацию.
⇨ Исходники
#docker #devops
BY ServerAdmin.ru
Share with your friend now:
tgoop.com/srv_admin/2403