TGViewer
CoreInfra CoreInfra @coreinfra · 530 subscribers
Post #145 632
Давно собирался написать, как мы делаем образы для легковесной VMM Firecracker. Firecracker используется в нашем полносистемном программируемом фаззере CoreInfra AT1.

Доработанный под наши задачи Firecracker используется, как герметичная среда исполнения тестовых сценариев. Чтобы фазу сетапа теста не проводить каждый раз мы используем механику snapshot/restore. Где за счет оптимизированного цикла, время restore составляет порядка сотен микросекунд и в результате мы исполняем полносистемные тесты до 500 раз в секунду на среднем сервере с восемью ядрами. Это позволяет один раз подготовить стартовый (чистый) сетап и дальше исполнять сотни сценариев в секунду без дорого степа окружения.

Для этого нам необходимо иметь гибкий способ создания и расширения базовых образов. Чтобы нужные зависимости тестируемой системы оказались в окружении.

Для этого мы используем следующую схему:

Ubuntu squashfs → Base Docker Image → Rootfs Docker Image → merged rootfs → tar → ext4


Сначала берется подготовленный Ubuntu squashfs для Firecracker и первый этап распаковывает squashfs, а второй превращает его содержимое в базовый Docker Image. Таким образом у нас получается базовый образ в точности соответствующий струкртуре изначального sqashfs образа для виртуальной машины.

Поверх базового образа применяется обычный Dockerfile.rootfs.
Через apt-get устанавливаются зависимости будущей VM: Python, Docker, containerd, runc, сертификаты и необходимые библиотеки.

Таким образом Docker выступает как конструктор файловой системы из подготовленного образа.

После сборки создается временный контейнер, а его объединенная файловая система экспортируется через docker export.

Далеее с помощью mkfs.ext4 создается ubuntu.rootfs.ext4, который подключается уже к Firecracker.

Такой способ удобен и для отладки в докер окружении, и непосредственно для запуска виртуальной машины, а также удобен для интеграции в CI если вам необходимы изолированные кастомные зависимости. Т.е. докер не как среда запуска, а как способ менеджмента файловой системы и зависимостей.

PS: если тема интересна, пишите в комментарии – выложу докерфайлы.

@tthread
  • 🔥 5
  • 👍 3
  • 🎅 2
  • ❤ 1
More from @coreinfra
  1. Sep 22, 2026CoreInfra pinned «Beta запуск новой фичи на хабе. Вы теперь можете принести свою подписку…
  2. Sep 22, 2026Beta запуск новой фичи на хабе. Вы теперь можете принести свою подписку на хаб и пользоват…
  3. Sep 16, 2026LLM – не единственный вид AI. Периодически появляются интересные альтернативные (либо допо…
  4. Sep 16, 2026А какое ваше рабочее место?) Здесь должен быть еще @hrissan за работой, но он фотографируе…
  5. Sep 14, 2026Количество стресса в жизни Во время решения олимпиадных задач часто применяется техника ст…
  6. Sep 14, 2026С Борей работали вместе ВКонтакте, сейчас он работает в OpenAI и ведет крутой блог. А идея…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →