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, то он тоже быстрее, можно перейти так же легко — установить и переключить контекст.