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

в 18:55, , рубрики: containers, development, docker desktop, MacOS, orbstack, virtualization
OrbStack: Почему я забыл про Docker Desktop - 1

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

Автор: Apokalepsis

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js