1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-crashcart

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Crashcart — инструмент для отладки микроконтейнеров

Crashcart — это простая утилита командной строки, которая позволяет загружать образ с бинарными файлами Linux в существующий контейнер.

Что такое Crashcart?

Crashcart — это простой инструмент командной строки, который позволяет загрузить образ с бинарными файлами Linux внутрь существующего контейнера.

Сборка Crashcart

  1. Установите Rust:

    • curl https://sh.rustup.rs -sSf | sh;
    • rustup toolchain install stable-x86_64-unknown-linux-gnu;
    • rustup default stable-x86_64-unknown-linux-gnu (для стабильной версии);
    • rustup target install x86_64-unknown-linux-musl (для стабильной версии);
    • rustup toolchain install nightly-x86_64-unknown-linux-gnu;
    • rustup default nightly-x86_64-unknown-linux-gnu (для ночной версии);
    • rustup target install x86_64-unknown-linux-musl (для ночной версии).
  2. Сборку можно выполнить через build.sh:

    • build.sh.
  3. По умолчанию build.sh собирает динамический двоичный файл с использованием gnu. Чтобы собрать статический двоичный файл, установите TARGET на x86_64-unknown-linux-musl:

  • TARGET=x86_64-unknown-linux-musl ./build.sh.

Создание crashcart.img

Для создания образа необходимы следующие зависимости:

  • sudo;
  • docker.

Чтобы создать образ, просто установите Docker и используйте build_image.sh:

  • build_image.sh.

Скрипт сборки образа создаст образ crashcart_builder с помощью файла Dockerfile в каталоге builder. Затем он запустит этот builder как привилегированный контейнер. Это необходимо, потому что образ создаётся путём монтирования файловой системы ext3 и копирования файлов. Возможно, удастся сделать это без привилегий root, используя что-то вроде e2tools, но они не были упакованы для alpine.

Первый запуск crashcart_builder займёт очень много времени. Перемещённые двоичные файлы создаются из исходного кода через менеджер пакетов nix, а набор инструментов должен быть собран с нуля. Последующие сборки должны выполняться гораздо быстрее, поскольку хранилище nix кэшируется в каталоге vol и монтируется в builder.

Чтобы добавить пакеты в список пакетов в результирующем образе, просто добавьте имена пакетов в файл packages перед сборкой. Пакеты устанавливаются через инструмент nix-env. Актуальный список пакетов nix можно найти здесь.

Использование Crashcart

Чтобы войти в контейнер и запустить bash Crashcart, передайте идентификатор контейнера:

  • sudo ./crashcart $ID.

$ID может быть идентификатором контейнера Docker или rkt или PID любого процесса, запущенного внутри контейнера.

Чтобы запустить другую команду из образа Crashcart, укажите полный путь:

  • sudo ./crashcart $ID /dev/crashcart/bin/tcpdump.

Чтобы использовать docker-exec вместо входа в пространства имён через внутреннюю обработку пространств имён Crashcart, используйте флаг -e (ПРИМЕЧАНИЕ: для этого требуется, чтобы $ID был идентификатором контейнера docker):

  • sudo ./crashcart -e $ID.

Запуск бинарных файлов вручную из образа Crashcart

Чтобы вручную смонтировать образ Crashcart в контейнер, используйте флаг -m.

  • sudo ./crashcart -m $ID.

Чтобы вручную размонтировать образ Crashcart из контейнера, используйте флаг -u.

  • sudo ./crashcart -u $ID.

После того как вы вручную смонтировали образ, вы можете использовать docker exec или nsenter для запуска чего-либо внутри контейнера. Crashcart находит свои двоичные файлы в /dev/crashcart/bin или /dev/crashcart/sbin. Например, чтобы выполнить tcpdump, можно использовать:

  • docker exec -it $CONTAINER_ID /dev/crashcart/bin/tcpdump.

Чтобы запустить оболочку со всеми утилитами Crashcart, доступными в пути, можно использовать:

  • docker exec -it $CONTAINER_ID -- /dev/crashcart/profile/bin/bash --rcfile /dev/crashcart/.crashcartrc -i.

Вы также можете выполнить эквивалентную команду с помощью nsenter:

  • sudo nsenter -m -u -i -n -p -t $PID -- /dev/crashcart/profile/bin/bash --rcfile /dev/crashcart/.crashcartrc -i.

Обратите внимание, что если вы используете пространства имён пользователей, вам может потребоваться указать -U. Вы также можете использовать -S и -G.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

После того как микроконтейнеры выполняют операции по минимизации в производственной среде, диагностика и устранение проблем становятся более сложными для администраторов, главным образом из-за отсутствия инструментов ОС. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-crashcart.git
git@api.gitlife.ru:oschina-mirror/mirrors-crashcart.git
oschina-mirror
mirrors-crashcart
mirrors-crashcart
master