OrbStack: Почему я забыл про Docker Desktop

от автора

Работая на MacBook с Docker Desktop, я часто сталкивался с тем, что система становилась менее отзывчивой, особенно при запуске нескольких контейнеров одновременно. Высокая нагрузка на CPU и память заметно влияла на время автономной работы.

Но недавно я наткнулся на OrbStack, и это изменило мой рабочий процесс настолько, что я решил поделиться своим опытом. Спойлер: теперь мой MacBook не превращается в печку, батарея держится дольше, а Docker-контейнеры летают.

Что такое OrbStack?

OrbStack — это не просто еще одна альтернатива Docker Desktop. Это полноценное решение «всё в одном» для запуска контейнеров, Kubernetes кластера и Linux виртуальных машин на macOS. Когда я впервые услышал об этом, я был настроен скептически. Мы все видели множество «альтернатив» Docker Desktop, которые в итоге создавали больше проблем, чем решали.

Но OrbStack оказался другим. Его главное отличие в том, что он изначально создавался с учетом особенностей macOS и специфики работы с контейнерами на Mac. И это чувствуется буквально во всем.

Почему я перешел на OrbStack?

Производительность

Первое, что я заметил после перехода — это разница в скорости работы:

  • OrbStack запускается за 2 секунды, в то время как Docker Desktop обычно требует 20-30 секунд

  • Сборка образов происходит быстрее примерно на 40-50%

  • Работа с файлами заметно ускорилась, что особенно заметно в крупных проектах

Эффективное использование ресурсов

Значительные улучшения заметны и в использовании системных ресурсов:

  • RAM используется в 3-4 раза эффективнее

  • Нагрузка на CPU в режиме ожидания минимальна

  • Энергопотребление заметно ниже — тесты показывают 180 mW против 726 mW у Docker Desktop при запуске одинаковых контейнеров (такие цифры можно получить при запуске Sentry, commit 15fa261f)

Полезные особенности для разработки

В процессе работы я оценил несколько функций, которые заметно упрощают разработку:

  • Автоматическое управление доменными именами: каждый контейнер доступен как container-name.orb.local, сервисы Kubernetes как service.namespace.svc.cluster.local, Linux машины как machine-name.orb.local

  • Прямой доступ к файлам контейнеров через Finder — можно работать с файлами контейнера как с обычной папкой

  • Отличные возможности отладки, которые особенно полезны при работе с minimal и distroless контейнерами. Правда, эта функция доступна только в платной версии, тогда как остальной функционал доступен в OpenSource версии для личного и некоммерческого использования. Я отказался от платной версии после пробного периода — бесплатной версии вполне достаточно для моих задач.

Техническая реализация

Архитектура у приложения достаточно интересная, сразу видно постарались, а не натянули UI. Из ключевого:

  • Использование Rosetta вместо QEMU для эмуляции x86 на Apple Silicon, что обеспечивает лучшую производительность

  • Компоненты, написанные специально для macOS на Swift, Go, Rust и C, что позволяет эффективно использовать системные API

  • Оптимизированная файловая система на базе VirtioFS с продуманным кэшированием

  • Собственная реализация сетевого стека с корректной поддержкой VPN и SSH

Простая миграция

Когда дело дошло до миграции, я ожидал обычной головной боли с переносом проектов. Но всё оказалось на удивление просто:

# Установка  brew install orbstack  # Миграция данных  orb migrate docker  # Переключение контекста  docker context use orbstack 

И всё. Правда. Все мои контейнеры, образы и тома перенеслись автоматически. Более того, я могу легко переключаться между OrbStack и Docker Desktop, если нужно — достаточно сменить контекст.

Что с инструментами разработки?

Это был мой главный страх — совместимость с существующими инструментами. Но оказалось, что всё работает как часы:

  • В моих любимых JetBrains IDE даже не заметил изменений

  • В VS Code так же работает без проблем

  • docker-compose, kubectl, helm — всё продолжает работать как раньше

Полноценная работа с Linux

Отдельно хочу отметить возможность работы с Linux машинами. В отличие от Docker Desktop, OrbStack позволяет запускать полноценные виртуальные машины с различными дистрибутивами Linux. Это особенно удобно, когда нужно:

  • Протестировать приложение в конкретном дистрибутиве

  • Запустить сервисы, которые сложно контейнеризировать

  • Использовать специфичные версии Linux для разработки

OrbStack поддерживает 15 различных дистрибутивов, и работать с ними действительно удобно — каждая машина доступна по имени (machine-name.orb.local), а файлы можно передавать простым перетаскиванием.

Если вам нужно запускать графические Linux-приложения, потребуется дополнительная настройка с использованием XQuartz или Xrdp. Это небольшое ограничение, но для большинства задач разработки оно не критично.

Итоги

После нескольких месяцев работы с OrbStack могу сказать, что это достойная альтернатива Docker Desktop. Основные преимущества, которые я заметил в повседневной работе:

  • Более быстрый запуск и работа контейнеров

  • Эффективное использование системных ресурсов

  • Удобная работа с файлами и сетью

  • Возможность запуска полноценных Linux-машин

  • Простая миграция существующих проектов

При этом важно отметить, что как и любой инструмент, OrbStack может не подойти для всех сценариев использования. Рекомендую попробовать его самостоятельно — благодаря простой миграции это не займет много времени. Потом можно вернуть

P.S. Если вы на Colima, то он тоже быстрее, можно перейти так же легко — установить и переключить контекст.

UPD 31.10.2024: Опубликовал статью с тестированием разных движков — https://habr.com/ru/articles/854832/


ссылка на оригинал статьи https://habr.com/ru/articles/853720/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *