TG Telegram Group & Channel
ServerAdmin.ru | United States America (US)
Create: 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

При работе с 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
👍81👎1


>>Click here to continue<<

ServerAdmin.ru




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)