Работая на 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/
Добавить комментарий