Работая на 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, то он тоже быстрее, можно перейти так же легко - установить и переключить контекст.
Комментарии (101)
pomidoroshev
26.10.2024 19:39Поддерживаю, ничем другим на маке после OrbStack пользоваться просто невозможно.
Отдельно радует, что автор - простой студент (ладно, не очень простой, а студент Стенфорда), который просто любит писать хороший софт.
CitizenOfDreams
26.10.2024 19:39Когда-то давно программисты придумали многозадачные операционные системы. Как так получилось, что теперь каждой задаче нужна своя собственная отдельная операционная система в контейнере?
N-Cube
26.10.2024 19:39Контейнеры придумали для управления зависимостями, а ограничение ресурсов это дополнительная функциональность, появившаяся позднее.
Revolt-or-die
26.10.2024 19:39Получилось из-за повального "на моей машине работает". А оно в свою очередь получилось естественным путем из-за того, что прикладные библиотеки даже в идеальном мире обновляются и нет нет, да ломается обратная совместимость или просто совместимось какой-то из 100500 возможных конфигураций библиотек. Эта проблема совершенно не новая и была и в 90е и даже в 80е.
MountainGoat
26.10.2024 19:39Так получилось, когда кто-то решил, что разделяемые библиотеки - это хорошо. Точнее, оно и было хорошо, когда для программ один релиз в 2-3 года был нормой, а чаще - странно. Тогда можно было ожидать, что все программы пользуются одной релизной версией библиотеки.
Потом началось: программы обновляются, библиотеки обновляются, закрывать критические дыры в безопасности в следующем релизе через 3 года стало не нормой. Теперь каждая программа требует свою уникальную версию библиотеки, и все ожидают её увидеть по одному и тому же пути. Многозадачная система: выбирай, какую задачу поставить, да.
Для решения вопроса придумали стандарт версионирования semver - который оказался следующим провалом. На бумаге красиво: библиотеки, отличающиеся мажорным номером не совместимы, а минорным - совместимы. На новый минорный номер можно спокойно обновлять, исправляя дыры в безопасности. На практике оказалось, что разработчики библиотеки далеко не всегда знают, являются ли их изменения обратно совместимыми. А пользователи ловят приколы: поставил одну программу - сдохла другая. Накатил обновление - сдохли обе.
Поэтому сначала в моду вошёл chroot, а потом Vargant. Да-да, Docker и Flatpak всех спасли: до них на полном серьёзе становилось нормой запускать каждую отдельную программу в полноценной виртуалке.
Aquinary
26.10.2024 19:39Проблема зависимостей - это та самая причина, по которой я перешёл на nixos. И оно того стоило (не смотря на все трудности перехода).
MountainGoat
26.10.2024 19:39NixOS ждёт затяжной нырок на дно: из команд разработки разбежались все технари, зато "инклюзивность" и "небинарность" теперь основные цели дистрибтива, до идиотизма. Те, кто остался, свято верят что не могут быть неправы по определению, а любой, кто с ними не согласен - засланый троль, как у Линуса.
Ну нафиг такое счастье. Я скорее Microsoft поверю и в вопросах приватности, и технологической надёжности: те хотя бы для вида должны законы соблюдать.
Aquinary
26.10.2024 19:39Пользуюсь дистром уже около двух лет - полёт нормальный. В чатике в тг состою, там тоже такого повода не проскакивает.
Хотелось бы больше конкретики: где эта "небинарность" и "инклюзивность" проявляется, в каких местах и как. Желательно со ссылкамиMountainGoat
26.10.2024 19:39
Megaloss
26.10.2024 19:39"Операционная система в контейнере" - похоже вы неправильно себе представляете как работают контейнеры. И для чего они нужны. Поищите на досуге про контейнеры "the hard way" или "Докер контейнеры без Докера" . Контейнеры - это прежде всего про изоляцию. И если ОС не нужна, в контейнер её тащить не надо (FROM scratch).
vitiok78
26.10.2024 19:39Мне для работы практически всегда надо подымать всю инфраструктуру нашей компании на локалке в контейнерах. Плюс IDE от Jetbrains, которая тоже жрет ресурсы как лошадь, плюс браузер и всякое остальное по мелочи. В итоге с Docker Desktop я постоянно упирался в нехватку памяти при моих 16 Гб. Это в свою очередь влекло за собой нехватку производительности, потому что система сильно залезала в swap.
Многие не понимают, что память - это главный ресурс на новых Mac.
OrbStack мгновенно решил все эти проблемы. И мне не пришлось жертвовать ничем, только сплошные плюсы
N-Cube
26.10.2024 19:39Плюс IDE от Jetbrains, которая тоже жрет ресурсы как лошадь…
Зачем ставить тяжеловесный модный софт, когда есть отличные текстовые редакторы с подсветкой синтаксиса (BBEdit), включая консольные (mcedit)?
kavaynya
26.10.2024 19:39Подозреваю, главная причина в том что человеку нужна IDE, но не текстовый редактор с подсветкой.
N-Cube
26.10.2024 19:39Так нужна IDE, что невозможность нормально работать после ее установки не имеет значения?
я постоянно упирался в нехватку памяти
Это в свою очередь влекло за собой нехватку производительности, потому что система сильно залезала в swap.Вспоминается анекдот: "Вам шашечки или ехать?". Ну и, конечно, "у тебя учет в рублях, а у меня - в сутках" (c).
fshp
26.10.2024 19:39Если в вашем проект 30 срок кода и 2 файла, то BBEdit подойдёт. А если строк миллион, файлов тысячи, то нужна быстрая навигация, поиск по типам, поиск по использованию, data-flow анализ и куча чего ещё.
Areso
26.10.2024 19:39между 30 строчками и миллионом строк есть целый континуум возможных опций...
fshp
26.10.2024 19:39Да, но в этом континууме опций выбор средств разработки конечен.
Давайте начнем с самого простого. В IDEA во время отладки я могу написать выражение на java, scala или kotlin с использованием переменных в текущей области видимости и выполнить его.
Могу дебаггеру предоставить кастомную функцию toString, что бы объекты определенного типа в дебагере отображались так, как мне нужно.
Например у меня есть объект типа матрица, а дебаггер будет рядом с именем переменной писать размер матрицы или другую интересующую меня информацию.
А ещё я могу взять эту переменную и вычислить ее определитель прямо во время дебага не меняя исходник и не перезапуская приложение.
На самом деле я не считаю определители матриц. Но вот выяснить какой объект по ключу лежит в хеш таблице очень даже часто нужно.
VSCode не для JS так умеет?
Знаете почему мне это удобно и важно? Потому что большие корпоративные приложения, в которых миллион строк, собираются и стартуют кучу времени. От кнопки запуска до точки останова может пройти пару минут (это у меня ещё быстро). А со сборкой все 15-20.
Если я исследую какой-то баг, то без IDEA за час сколько я гипотез могу проверить каждый раз перезапуская приложения с новым кодом для дебага? 5, 10?
Давайте пример посложнее. Нужно найти все места, откуда функция вызывается с учётом всех вложенных вызовов. Например вы меняете какой-то общий код, и хотите выяснить какие части приложения будут затронуты. Тесты дописать, тестировщикам дать задание проверить.
IDEA позволяет построить дерево вызовов. Причем в обе стороны: входящие и исходящие связи.
А вот в микросервисе на 300 строк кода это не нужно, да. Там весь код помещается в голове.
А например кликнуть по имени колонки в sql запросе и попасть в подключенную базу данных BBEdit умеет?
fshp
26.10.2024 19:39Отвечаю на свои же вопросы по VSCode.
Выражения в дебаггере работают, дебаг консоль тоже работает.
Кастомные вьюхи в дебаггере не нашел.
Call hierarhy работает в обе стороны.
До sql не дошел.
Но на первый взгляд все мои доводы не обоснованы.
Я что, превратился в старого ретрограда? Непривычно, но попробую.
N-Cube
26.10.2024 19:39Пока вы тут фантазируете про миллионы строк кода, разработчики линукс (где реально много кода и файлов) пользуются текстовыми редакторами. Конечно, для этого нужно уметь программировать, а не надеяться на автодополнения от IDE. Кстати, называть типы данных так, что их по названию нельзя отличить - это вы нашли, чем хвалиться…
fshp
26.10.2024 19:39Ну я отсылал патч в Linux. С удовольствием использовал бы CLion для разработки. Но он только с cmake тогда умел работать. Поэтому в Eclipse исходники ковырял.
Вы мне ещё предложите на работе по почте патчи слать.
Areso
26.10.2024 19:39на работе по почте патчи слать.
вы не поверите, но как минимум в одном банке так и есть!
NAI
26.10.2024 19:39главная причина - распаянная память на маке. Был бы там разъем всеб просто ставили 32/64 Гб и не парились.
Мне вот надо работать с VM'ками (астра мать ее линукс), сколько там в 16 Гб влезет? штуки 3-4, а если завернуть это все в EVE-NG с парой коммутов/МЭ, то всё, 2-3, VM'ки это в лучшем случае.
sintech
26.10.2024 19:39Кто мешает покупать сразу с нужным объемом распаянной?
NAI
26.10.2024 19:39я конечно не слежу за apple, но разве существуют макбуки с 64\128 Гб ОЗУ?
Ну и что там с ценами на 32 Гб версии? мне вот 17 тыщ хватит для апгрейда на 64 ОЗУ
sintech
26.10.2024 19:39но разве существуют макбуки с 64\128 Гб ОЗУ?
Вы сами ответили на вопрос. У процессоров M, память сидит на внутренней шине процессора, поэтому она распаяна с ним на одной подложке и ее нельзя сделать внешней и сменной при сохранении скорости.
Хотите сменную покупайте Intel/AMD.
NAI
26.10.2024 19:39Так о том и речь, что цепочка событий выглядит так:
Эпл распаяла память т.к. модно стильно-молодёжно -> повелся на маркетинг, взял мак -> получил ограниченный объем ОЗУ (в среднем 16 Гб), без возможности апгрейда -> начал решать рабочие задачи -> уперся в нехватку -> начались пляски с оптимизацией и костылингом
Первопричина то всего этого как раз распаянная память и выбор оборудования не соответствующее задачам.
Tsimur_S
26.10.2024 19:39но разве существуют макбуки с 64\128 Гб ОЗУ?
Самая топовая прошка как раз и будет 128 GB RAM. Разве что ценник совсем не гуманный.
poimtsev
26.10.2024 19:39Да, тут можешь собрать конфигурацию на свой вкус https://www.apple.com/shop/buy-mac/macbook-pro/14-inch-space-black-apple-m3-max-with-14-core-cpu-and-30-core-gpu-36gb-memory-1tb#
vitiok78
26.10.2024 19:39Потому что IDE от Jetbrains - это то, что мне надо.
Для примера: зачем вы пишете комментарии на Хабре, если есть одноклассники и вконтакте?
N-Cube
26.10.2024 19:39Потому что IDE от Jetbrains - это то, что мне надо.
То есть задачи написать код у вас нет, нужна только IDE чтобы… что? А когда на (удаленных) хостах доступна только базовая система (дебиан, к примеру) и консольный редактор типа nano? Не говоря уж о том, что подсветка синтаксиса в редакторах работает с полусотней или более языков программирования, а IDE поддерживают лишь некоторые популярные языки. Не потому ли нейросетями заменяют «программистов», что таковые только сниппеты и автоподстановку IDE могут использовать для кодирования, а нейросети все это делают куда быстрее?
vitiok78
26.10.2024 19:39Если вы редактируете код программ напрямую на удаленных хостах, как в нулевых, то могу вас поздравить с наступающей катастрофой с последующим увольнением.
IDE от Jetbrains - это настоящий комбайн, который включает в себя всё, что мне нужно для работы с проектом. Мне не надо настраивать 100500 разных инструментов для работы с кодом, с базой данных, с http клиентом, с докером и т.д и т.п. Там всё это есть и всё связано друг с другом.
Но самое главное - это рефакторинг. Такого мощного рефакторинга нет ни в одной другой IDE или текстовом редакторе. Одна эта функция экономит мне часы работы со старым или чужим кодом.
Если лично вам всё это не надо, это не означает, что другим людям это не требуется.
N-Cube
26.10.2024 19:39Столько слов и ни одного пруфа. Где результаты-то, кроме восхваления IDE? Почему-то линукс, постгрес, эскулайт написали программисты в текстовых редакторах. Где переписанное вами ядро линукса, к примеру, в подтверждение этого «мощного рефакторинга»? Или вы в этой супер IDE только комментарии на хабр писать можете?:)
poimtsev
26.10.2024 19:39Я боюсь, что в текущих условиях, (бывшие) пользователи продуктов JB не имеют возможности (легально) насладиться всеми плюсами IDE от JB :)
Uint16Array
26.10.2024 19:39а в чём проблема собрать себе на интолъ 128гиг-стенд для Всех контейнеров и управлять этим всем с эира в 1.2кило?)
Areso
26.10.2024 19:39стенду нужен интернет, электричество, охлаждение, определенная влажность (Тайландские "номады" передают привет).
aakolov
26.10.2024 19:39Но почему тогда не взять линукс за основную рабочую систему вместо мака с осХ? Современные ноуты на интел есть и с 32 гб, и даже с бОльшим размером ОЗУ.
AlexPTS
26.10.2024 19:39У orbstack есть проблема с публикацией портов на кастомный интерфейс https://github.com/orbstack/orbstack/issues/291 Используя кастомные интерфейсы, мы решаем пооблему пространства портов и можем повторяться в портах на хосте, сделав доп подсети и забиндив их на нужный сетевой интерфес. В остальном RnD по orb только положительные эмоции ьоже оставил.
sedyh
26.10.2024 19:39Почему не Podman Desktop?
Apokalepsis Автор
26.10.2024 19:39Честно, не знал что есть Posdman Desktop. Перепробовал много альтернатив и Docker Desktop был удобнее всего, пока с OrbStack не познакомился. Из того что явно отличается, нет поддержки виртуалок, удобно когда с помощью одного приложения можно ставить.
Поставлю себе рядом, прогоню пару тестов, посмотрим как себя поведет. Если будут интересные результаты - опубликую.
gun_dose
26.10.2024 19:39Не совсем понятно из контекста, это замена Docker или замена Docker Desktop. Если я всегда стартую проекты командой docker-compose up -d из терминала и практически никогда не пользуюсь GUI Docker Desktop, поменяется ли что-то при переходе на Orbstack? И ничего не понятно по миграции: зачем она вообще нужна? Изменился ли синтаксис compose файлов? Что с форматом Dockerfile? Что с реестром образов?
Apokalepsis Автор
26.10.2024 19:39Это замена именно Docker Desktop. Все интеграции, команды docker и т.п. работает нативно. Но это не просто интерфейс, работа сильно эффективнее, батарейку жрет мало, помимо контейнеров можно спокойно запускать Linux виртуалки и есть инструмент для откладки distroless и подобных контейнеров.
То есть отвечая на ваш вопрос, если пользуетесь только терминалом, то получите прирост в производительности файловой системе, оптимизации по CPU, и долгую батарейку.
Про миграцию - что бы все данные перенести в OrbStack. Docker Desktop можно использовать параллельно, но если что-то соберете в нем, в OrbStack нужно собирать повторно, так как эти ресурсы не шарятся, разные контексты.
gun_dose
26.10.2024 19:39В таком случае это выглядит очень интересно. Предложу затестить коллегам, у кого мак. Я в своё время пересел с рабочего мака на личный ноут с виндой и WSL2 именно из-за недостаточной производительности докера на макоси.
Apokalepsis Автор
26.10.2024 19:39Я в такой же ситуации просто использовал вторую систему с Linux, потому-что у винды были аналогичные проблемы с производительностью файловой системы (для меня это было основная проблема). Потом устал переключаться и просто стал использовать удаленный сервер для разработки. Ну а потом Docker представил новый драйвер и в целом стало можно жить.
Glembus
26.10.2024 19:39Муть опуса не в ОС а в том что десктоп докера ахренеть какой кривой. Но, что мешает использовать докер чисто без десктопа. Все летает. Единственное неудобство это управление. Но для дева это не должно быть проблемой
Apokalepsis Автор
26.10.2024 19:39Что вы под этим подразумеваете?
brew info --cask docker ==> docker: 4.35.0,172550 (auto_updates) https://www.docker.com/products/docker-desktop Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/d/docker.rb ==> Names Docker Desktop Docker Community Edition Docker CE ==> Description App to build and share containerised applications and microservices ==> Artifacts Docker.app (App) Docker.app/Contents/Resources/etc/docker-compose.fish-completion -> /opt/homebrew/share/fish/vendor_completions.d/docker-compose.fish (Binary) /Applications/Docker.app/Contents/Resources/bin/docker -> /usr/local/bin/docker (Binary) /Applications/Docker.app/Contents/Resources/bin/docker-credential-desktop -> /usr/local/bin/docker-credential-desktop (Binary) /Applications/Docker.app/Contents/Resources/bin/docker-credential-ecr-login -> /usr/local/bin/docker-credential-ecr-login (Binary) /Applications/Docker.app/Contents/Resources/bin/docker-credential-osxkeychain -> /usr/local/bin/docker-credential-osxkeychain (Binary) /Applications/Docker.app/Contents/Resources/bin/hub-tool -> /usr/local/bin/hub-tool (Binary) Docker.app/Contents/Resources/etc/docker.bash-completion -> /opt/homebrew/etc/bash_completion.d/docker (Binary) Docker.app/Contents/Resources/etc/docker.zsh-completion -> /opt/homebrew/share/zsh/site-functions/_docker (Binary) Docker.app/Contents/Resources/etc/docker.fish-completion -> /opt/homebrew/share/fish/vendor_completions.d/docker.fish (Binary) /Applications/Docker.app/Contents/Resources/bin/kubectl -> /usr/local/bin/kubectl.docker (Binary) Docker.app/Contents/Resources/etc/docker-compose.bash-completion -> /opt/homebrew/etc/bash_completion.d/docker-compose (Binary) /Applications/Docker.app/Contents/Resources/cli-plugins/docker-compose -> /usr/local/cli-plugins/docker-compose (Binary) Docker.app/Contents/Resources/etc/docker-compose.zsh-completion -> /opt/homebrew/share/zsh/site-functions/_docker-compose (Binary) ==> Analytics install: 19,143 (30 days), 57,727 (90 days), 231,687 (365 days)
Вы думаете что у просто Docker и Docker Desktop разная реализация? Для Mac
mystdeim
26.10.2024 19:39я кстати тоже до конца не понимаю как это работает. Os x не может нативно использовать docker как linux, нужна виртуализация. Docker Desktop -- это типо то что по дефолту ставиться через brew install docker?
slonopotamus
26.10.2024 19:39brew install docker
ставит только консольный докер-клиент. Сервера там нет, его надо ставить отдельно.brew install --cask docker
ставит Docker Desktop - софтину, которая умеет запустить виртуалку с линуксом и докер-демоном внутри, и выставляет сокет от этого демона в хост-систему, чтобы докер-клиент мог общаться с демоном.
Tony-Sol
26.10.2024 19:39Да, разная
То что cask’ом ставится: docker desktop, это и виртуальная машина, и docker демон внутри, и docker клиент, и расширения типа compose, buildx, scout, etc.
То что formula’ой ставится: это только клиент, которому нужна обвязка, которая даст сокет, к которому и будет подключаться клиент, например lima/colima или podman
Apokalepsis Автор
26.10.2024 19:39В контексте автора комментария все таки имелся ввиду докер desktop (по крайне мере я так понял), потому что бы использовать его (без других реализаций), нужно установить все что вы перечислили, а официальный дистрибутив который все это включает - Docker Desktop
mystdeim
26.10.2024 19:39Потестировал OrbStack на своих проектах, практически не заметил разницы. Есть 2 проекта: один жирный на kotlin, другой маленький на python. Оба активно используют контейнеры для тестов: redis, kafka, elasticksearch, mongodb, pgsql и другие.
Docker Desktop
mvn clean package 785.61s user 50.72s system 190% cpu 7:18.51 total
poetry run pytest -v 4.72s user 1.70s system 19% cpu 32.080 total
OrbStack
mvn clean package 774.98s user 46.27s system 196% cpu 6:57.17 total
poetry run pytest -v 4.38s user 2.36s system 21% cpu 31.341 total
Разница на жирном проекте всего лишь 1 процент.
P.S. У меня macbook m1 (32GB RAM), использую только arm контейнеры, Docker Desktop на всякий случай вообще удалил
Apokalepsis Автор
26.10.2024 19:39Свои замеры не делал, ориентировался на несколько внешних источников.
Сегодня в течении дня сделаю, заодно еще и Podman Desktop потестирую.
slonopotamus
26.10.2024 19:39Podman Desktop
Ох и развелось этих десктопов... Ещё Rancher Desktop есть.
Apokalepsis Автор
26.10.2024 19:39Блин, я уже bench написал и запустил :)
Tony-Sol
26.10.2024 19:39Собственно сам bench, а именно то, как сравнивались между собой orbstack и docker desktop, на какой машине, на каких образах, с маунтом/без маунта и тд - вот это было бы неплохо в статье увидеть
Apokalepsis Автор
26.10.2024 19:39Когда писал, не видел в этом смысла, потому что много публичных, и цифры а моей статье им соответствуют + личный опыт.
Но вы правы, после комментариев понял что актуально, особенно сравнение со специфическими движками (podman и прочее). Поэтому сегодня планирую опубликовать новую статью, вышло много кода и анализа.
Мне осталось решить одну основную проблему - подсчет mW, что бы понять потребление и сравнить его.
Djaler
26.10.2024 19:39Можно тогда ещё и colima добавить в тест?
https://github.com/abiosoft/colimaTony-Sol
26.10.2024 19:39Тогда можно и оригинал еще, в лице https://github.com/lima-vm/lima
Apokalepsis Автор
26.10.2024 19:39Не понятно, будет ли прямое сравнение. Больше похоже на то что нужно сравнивать с запуском в виртуалке.
Tony-Sol
26.10.2024 19:39Ну по сути, любой сравнение работы докера под macos упирается в то, насколько производительная обертка над qemu или vz под капотом, и в этом ключе, как будто, лучше lima пока ничего нет
Apokalepsis Автор
26.10.2024 19:39Я так понял докер внутри Lima нужно устанавливать в явном виде?
Тестирование производительности Colima даст понимание производительности Lima?
Tony-Sol
26.10.2024 19:39Я так понял докер внутри Lima нужно устанавливать в явном виде?
не обязательно, есть разные шаблоны, но при желании можно и сконфигурировать все руками
Тестирование производительности Colima даст понимание производительности Lima?
сложно сказать, как раз по причине выше - надо посмотреть как именно colima конфигурирует виртуалку
Apokalepsis Автор
26.10.2024 19:39Я тогда пока потестирую все движки включая Colima, но без Lima, если будет желание доработать или помочь доработать скрипты (я их на GitHub выложу), то сможем совместно допилить за рамками текущего тестирования.
Там в целом можно развить тестирование и посмотреть например на производительность Docker в разных виртуалах.
ddwu
26.10.2024 19:39Парни расходимся, оно на win10 не работает вообще. :Ъ
slonopotamus
26.10.2024 19:39Win10 осталось жить год.
achekalin
26.10.2024 19:39Да, это плохая новость. Прямо как у классика: 2000-ная умерла, 7-ка умерла, 10-ке жить год остался... Но по сути, и правда, на 11 не хочется всеми фибрами, её штормит как бету уже который год (!). Впрочем, никто не мне запретит десятку и дальше использовать, а что обнов не будет, так только спокойнее станет, полагаю, будут только очень редкие затычки для совсем серьезных дыр, а это лучше, чем KB-ки с изменениями в стиле "поменяли местами кнопки в калькуляторе". *Грустная улыбка*
WebMonet
26.10.2024 19:39Ставлю плюсик Orb за то, что из контейнера стало видно продакшен-БД, которая находится у меня за вайргардом и ВПН. Оно просто заработало. Докер даже после плясок с бубном вокруг роутинга и т.д. не смог так.
IRT
26.10.2024 19:39Попробовал OrbStack, действительно намного быстрее Docker Desktop. К сожалению, для Home Assistant и Homekit по-прежнему не подходит, для этих целей приходится использовать обычную виртуальную машину с мостом к основной сети, внутри нее уже docker контейнер с Home Assistant.
Host networking with mDNS is supported, but there's something else missing for HomeKit that we're not sure about yet.
RodionGork
Любопытно, спасибо - однако всё же неясно что удерживает всех кому нужен докер от использования его непосредственно в Linux-е :) типа сами себе создаём проблему потому что макбук удобнее для созвонов и вообще попрестижнее выглядит - и потом мужественно боремся с кучей мелких неуобств возникающих тупо из-за того что OsX это не Linux. Ну или уж как вариант два ноута использовать - один для профессиональных задач, второй для созвонов и совещаний :)))
TimonKK
Почему не линукс - моя безпроводная перефирия очень плохо работает на линуксе. Как десят лет назад, я не готов постоянно-периодически мучаться, почему отвалились наушники, где моя мыш и т.п. Люблю линуск, но на расстоянии
antonkzt
Дичайше плюсую. 7 лет работал на Ubuntu/mint/ZorinOS. Каждый раз при созвонах тратились нервы. То скролл перестает работать на беспроводной мышке, то микрофон у наушников отъедет и приходится лезть в настройки и выбирать устройство ввода…
Homyakin
Что на работе выдают, с тем и работаем
N-Cube
Четверть века назад нужно было на линуксе поддерживать пачку chroot с разными версиями софта и дистрибутивами. Сегодня можно сделать то же самое куда проще и быстрее с помощью контейнеров докера. Какую систему выбрать хостовой - дело вкуса, а не необходимость. Кстати, линукс на эппл силикон до сих пор далек от идеала - и всегда будет игрушкой, пока это не дебиан :) - а другого выбора ноутов и моноблоков со сравнимым экраном (не говоря обо всем остальном) просто нет.
TimonKK
Я года три на WSL на nodejs проекты пилил. Версия 1.0 прям сырая была, а вот 2.0 прям огонь. Причем можно виртуалку в файл экспортнуть, так несколько раз между виндовыми компами ubuntu со всеми настройками/пакетами/проектами переносил - красота! Пришлось пересесть на мак, поскольку ВПН + интернет в WSL стали шалить, то работает, то нет, то опять работает
NeoNN
Я тоже с этим столкнулся, когда каждый раз при запуске wsl перепрописывался dns сервер, он не работал с впн и приходилось его менять в resolv.conf на 1.1.1.1.
vvv1965
Wsl.conf править не пробовали ?
NeoNN
Пробовали
Alexufo
мост к файловой системе через WSL крайне медленный. Хотел гит из SWL в винде увидеть - скорость доступа убила
Vasjen
Линукс как ОС нужен где-то в 5% от всех рабочих задач, ради этого использовать ее как основную ОС, уж тем более заводить второй ноут – очень странное решение, на любителя, так сказать.
Pavel1114
смелое утверждение. Особого веса ему придаёт конкретная цифра.
На самом деле всё зависит от профессии, занимаемой позиции и, конечно же, личных предпочтений. Мне использование linux как основной и единственной системы, в разы упрощает многие вещи. От MacOS я плевался почти так же как типичный маковод от ubuntu. Дело вкуса. Везёт нам что есть альтернативы. Надеюсь они сохраняться
Vasjen
Ну я конкретно за свой случай и говорю. Веб разработчик, использую .NET + React, Rider + WebStorm + Insomnia. Все это прекрасно работает под любой ОС. конкретных преимуществ линукса при таком сценарии просто нет, а контейнеры нужны для того, чтобы развернуть базу, брокер сообщений, проверить работу приложения в условиях, максимально близким к хостингу. И работать под маком просто гораздо проще, чем под линуксом, где все работает из коробки и работает нормально.
andmerk93
Докер на хостовой ОС, а не через ВМ-прослойку.
Kahelman
Главное не что хотели сказать а что сказалось:
«.. и работать под Маком проще чем под Линуксом, где все работает из коробки и работает нормально».
Т.е. ежики кололись и продолжали есть кактус, вместо того чтобы пересесть на Линукс :)
isden
Ну у меня макбук и ноут на линуксе, обоими пользуюсь с удовольствием (я уж не говорю про "парк" личных серверов на линуксах). Не нужно обобщать свои личные заморочки на всех.
ExTalosDx
Смотри я человек, который не верит в б... то есть в принципе в подобные штуки.
Я сижу на линуксе с 13 лет, мне 27. Я настраивал 6 Centos, когда мне было 15 лет.
И знаешь что я тебе скажу Линукс до появления flatpak это страх, смерть личной и социальной жизни и ужас.
Вместо того чтобы делать уроки я настраивал Линукс, чинил драйвера, ядро, жор памяти.... чинил UI менял UI.
Большинство тех кто мне заливает про линукс даже не знает о существовании Timeshift, которая must have на линуксе, если ты на работе хочешь работать, а не настраивать Линукс.
Так вот я как-то раз попробовал мак, для меня это был кринж другая ракладка, некоторые ограничения в ОС.
Спустя время я заметил, что, когда я сажусь работать я просто открываю крышей ноута одним пальцем и просто работаю.
Понимаешь. ПРОСТО сажусь и работаю.
Не мучаюсь с настройкой всего и вся, а просто работаю.
Линукс у меня остался на рабочем ноуте и по прежнему за 10+ лет не починили выключение Карл системы. А этому ноуту 3 года всего. Мне приходится удерживать кнопку выключения чтобы ноут отрубился.
И Линукс мне нравится, у меня его всё ещё очень много дома, рабочий ноут, роутер, steam deck.
Но единственные кто реально сделал всё красиво с линуксом что он работает практически нормально это Valve со Steam Deck и знаешь на чем они основали свою SteamOS v2? На Arch Linux и flatpak. Я уже говорил что "я же говорил что будущее за арчем + flatpak!"?
Короче мак отличное устройство, хочешь верь хочешь нет, это тебе говорит человек, который всю жизнь провел ковыряю Линукс и ПО.
Если ты не веришь мне, то ты не поверишь никому и в таком случае диалог окончен.
Aquinary
А вот в nixos...
h1pp0
У меня похожий бекграунд, но другие впечатления. Познакомился в 14 лет, начал использовать как основную систему с 15 лет, а сейчас мне тоже 27.
Всё работает как часы. Да, иногда настройки ("время") могут сбиться, и их надо немного поправить.
В отличие от мака каких-то непредсказуемых изменений не происходит. Если что-то пойдет не так, то я могу поставить другое ядро/систему. Могу сделать апгрейд железа. Могу заменить сломанную клавиатуру за 2 минуты.
Timeshift не использовал. Сборка некоторых хитрых пакетов стала отличным шагом в сторону вычислительной дискретной математики. Не уверен, что смог бы собрать под мак.
andmerk93
У меня с ноутом на винде такое было.
На PS3-PS5 и Nintendo'вски консолях не линукс, а вообще FreeBSD. Тоже включается одной кнопкой, тоже работает из коробки, тоже не требует настроек.
Куча сетевого оборудования (роутеры, коммуты), в т.ч. домашнего на openwrt или его форках (линукс без флатпака). Работает из коробки, настраивается мышкой, держит годы аптайма.
Вывод? Нормально делай - нормально будет. Дело не в ОС.
vvzvlad
Какой же вы самодовольный ***...
Т.е. вы за 10 лет не смогли разобраться c systemd и реакцией на кнопки и вырубаете систему на горячую каждый раз? Немного не то, что ожидаешь от линукс-пользователя с 14 летним стажем..
crackcraft
Ничего удивительного!
Например у меня есть знакомая с 12 летним стажем безаварийного вождения.
Водительские права посто лежат где-то далеко с момента получения :)
dbuhonov
Потому что это красиво