Контейнеры на Mac: Docker Desktop, OrbStack, Apple container

Рейтинг: 71.7% · 16 голосов
Подробный курс по macOS для разработчиков и админов: архитектура и Apple Silicon, терминал и zsh, Homebrew и пакеты, launchd и автоматизация, APFS и Time Machine, безопасность (SIP, Gatekeeper, TCC, FileVault), сеть, логи и диагностика, MDM и DDM, контейнеры и виртуализация, восстановление. По официальной документации Apple, актуально на 2026 (macOS 26 Tahoe).
Ответить
Аватара пользователя
Artem_MacAdmin
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Контейнеры на Mac: Docker Desktop, OrbStack, Apple container

Сообщение Artem_MacAdmin »

Оглавление курса (47)
  1. Что такое macOS: Unix под капотом и место в 2026
  2. Архитектура macOS: XNU, тома и Signed System Volume
  3. Apple Silicon: ARM, Rosetta 2 и отличия от Intel
  4. Установка, обновление и восстановление macOS
  5. Finder, рабочий стол и продуктивность
  6. Системные настройки и их управление из CLI (defaults)
  7. Пользователи и группы: учётные записи и управление
  8. Терминал и zsh: командная строка macOS
  9. CLI на macOS: BSD-команды и отличия от Linux
  10. Настройка zsh: .zshrc, prompt, плагины
  11. Файловая система и права: POSIX, ACL, атрибуты, флаги
  12. Homebrew: пакетный менеджер для macOS
  13. Homebrew глубже: tap, Brewfile, services, обслуживание
  14. Другие пакеты: MacPorts, mas, Nix и App Store
  15. Установка приложений: .app, .dmg, .pkg и Gatekeeper
  16. Управление приложениями и их данные
  17. launchd и launchctl: система запуска macOS
  18. Свои службы и периодические задачи на launchd
  19. Автоматизация: Shortcuts, AppleScript и osascript
  20. Конфигурация как код: defaults, plist и профили
  21. APFS: снапшоты, клоны, контейнеры и шифрование
  22. Управление дисками: diskutil, образы и форматирование
  23. Time Machine и резервное копирование
  24. Внешние диски, форматы и сетевые тома
  25. Модель безопасности macOS: SIP и целостность системы
  26. Gatekeeper, нотаризация и защита от вредоносов
  27. Приватность и TCC: разрешения на доступ
  28. FileVault: полнодисковое шифрование
  29. Связка ключей и управление секретами
  30. Сетевой экран и защита сети
  31. Сеть в macOS: настройка и инструменты
  32. Диагностика сети на Mac
  33. Общий доступ: SSH, экран, файлы, удалённое управление
  34. Процессы и ресурсы: мониторинг производительности
  35. Логи macOS: unified logging и диагностика
  36. Производительность и энергия: powermetrics, диагностика
  37. Энергия, сон и обслуживание системы
  38. Профили конфигурации и основы MDM
  39. Управление парком Mac: MDM, DDM и zero-touch (2026)
  40. Среда разработчика на Mac: Xcode CLT, git, версии
  41. Контейнеры на Mac: Docker Desktop, OrbStack, Apple container (вы здесь)
  42. Виртуализация: Virtualization.framework, UTM, Linux и Windows
  43. Режимы загрузки и восстановление (Apple Silicon)
  44. Сброс, NVRAM, Safe Mode и сброс настроек
  45. Траблшутинг macOS: дерево решений по симптомам
  46. Место на диске и обслуживание системы
  47. Сквозной проект: настройка Mac как у профи + куда расти
Почему "docker mac" - это всегда виртуалка

Ты набираешь docker run alpine на своём M3, контейнер стартует, и кажется, что Linux-контейнеры крутятся прямо на macOS. Это иллюзия, и пока ты её не разрушишь, половина проблем с производительностью и сетью будет казаться магией.

Контейнер - это не виртуалка. Контейнер - это процесс хост-ядра, изолированный namespace'ами и cgroups Linux. Ключевое слово - ядра Linux. У macOS ядро не Linux, а XNU (гибрид Mach + BSD). Никаких namespaces и cgroups в духе Linux там нет. Значит, чтобы запустить Linux-контейнер на Mac, нужно сначала где-то взять работающее Linux-ядро. Его берут из легковесной виртуальной машины.

Поэтому любая связка "docker desktop mac", colima, OrbStack, Rancher Desktop устроена одинаково по сути:
  • поднимается Linux-VM (через Apple Virtualization.framework или QEMU);
  • внутри неё крутится демон контейнеров (dockerd, containerd);
  • а CLI у тебя на macOS общается с демоном внутри VM по сокету.
Различия между продуктами - не в том, "есть VM или нет", а в том, какая VM, насколько тонкая прослойка, как пробрасываются файлы и сеть, и сколько это жрёт ресурсов. Когда поймёшь это, выбор инструмента станет инженерным, а не вкусовым.

Изображение

Что под капотом: VM, проброс файлов и сети

Разберём механику по слоям, потому что именно здесь рождаются грабли.

Гипервизор. На Apple Silicon есть штатный Virtualization.framework - системный API Apple для запуска VM с аппаратным ускорением (тип гипервизора 2, поверх Hypervisor.framework). Современные инструменты используют именно его (в colima это режим --vm-type vz). Старый путь - QEMU в софтверной или kvm-подобной эмуляции, он медленнее и нужен в основном для эмуляции чужой архитектуры (запустить amd64-образ на arm64).

Архитектура образов. Твой Mac - arm64 (aarch64). Linux-VM тоже arm64. Значит, по умолчанию ты тянешь и запускаешь arm64-образы. Когда образа под arm нет или тебе нужен ровно amd64 (воспроизвести прод), включается эмуляция через QEMU/Rosetta. Rosetta 2 умеет ускорять трансляцию x86_64-кода и внутри Linux-VM - это даёт почти нативную скорость amd64-бинарей вместо медленного QEMU-TCG. Поэтому образы для разных платформ помечают так:

Код: Выделить всё

docker run --platform=linux/amd64 alpine uname -m
x86_64
Если видишь x86_64 на M-чипе - значит работает трансляция, а не родной arm.

Проброс файлов (вот главная боль). Контейнер живёт в VM, а исходники проекта - на macOS-диске (APFS). Когда ты делаешь bind mount (-v $(pwd):/app), файлы надо как-то отдать внутрь VM через границу хост<->гость. Классический путь - сетевые протоколы вроде gRPC-FUSE или 9p/virtio-fs. Любой из них на мелких частых операциях (тысячи stat/open, как у node_modules или composer) даёт ощутимую просадку. Отсюда легенда "docker на маке тормозит" - тормозит не контейнер, тормозит шара bind mount.

Проброс сети. У VM свой сетевой стек. Чтобы curl localhost:8080 с macOS попадал в контейнер, проброшенный порт форвардится из VM на хост. Большинство инструментов делает это прозрачно, но именно здесь различается, видишь ли ты контейнеры по их собственным IP напрямую с macOS (OrbStack и Apple container умеют, классический Docker Desktop - нет без доп. настроек).

Игроки 2026: docker desktop mac, orbstack, colima, apple container

Docker Desktop - дефолт индустрии. GUI, встроенный Kubernetes, docker compose, расширения, Dev Environments. Минусы: тяжёлый (базовая VM легко ест 2+ ГБ RAM в простое), и лицензия. С 2021 года коммерческое использование в организации крупнее порога (более 250 сотрудников ИЛИ более 10 млн долларов годовой выручки - достаточно одного из условий) требует платной подписки Pro/Team/Business. Для личного использования, обучения, некоммерческого open source и малого бизнеса - бесплатно. Это не про сам Docker (движок и CLI - Apache 2.0), а именно про приложение Docker Desktop. Многие переходят на альтернативы именно из-за этого пункта.

OrbStack - на 2026 это самая популярная замена Docker Desktop на Mac. Сделан нативно под Apple Silicon, стартует меньше чем за пару секунд, в простое держит порядка 200-300 МБ RAM против 2+ ГБ у Docker Desktop, файловые операции на bind mount в разы быстрее. Понимает обычный docker CLI и docker compose без переучивания, плюс умеет лёгкие Linux-машины (как мини-WSL) и локальный Kubernetes. Минус один, но важный для бизнеса: для коммерции это платный продукт (есть бесплатный личный/некоммерческий тариф). По духу "orbstack" - это "docker desktop, только быстро и без жора".

colima (Containers on Lima) - бесплатный CLI-инструмент поверх Lima (Linux Machines). Никакого GUI, всё из терминала. Идеален для тех, кто живёт в консоли и хочет полный контроль и нулевую лицензионную головную боль. Поднимает Linux-VM и кладёт туда docker или containerd:

Код: Выделить всё

brew install colima docker
colima start --cpu 4 --memory 8 --disk 60 --vm-type vz
docker ps
После colima start ты используешь обычный docker, потому что colima настраивает docker context на свой сокет. Можно держать несколько профилей (colima start dev ...), переключать runtime (--runtime containerd), выбирать виртуализацию (--vm-type vz - нативная, быстрая; --vm-type qemu - для эмуляции архитектур).

Rancher Desktop (открытый, с упором на Kubernetes/k3s и nerdctl) и Podman Desktop (демонлесс, rootless, дружит с red-hat-миром и квадлетами) - тоже живые и бесплатные альтернативы. Rancher хорош, если основная работа - локальный кластер; Podman - если важна модель без демона и совместимость с серверным Podman.

Apple container - новинка, ради которой стоило открывать урок. Это официальный open source CLI от Apple для запуска Linux-контейнеров на Apple Silicon, представленный на WWDC 2025, стабильная версия 1.0.0 вышла 9 июня 2026. Принцип радикально иной, чем у всех выше: вместо одной общей большой VM на все контейнеры, "apple container" поднимает отдельную сверхлёгкую Linux-VM на каждый контейнер. Это даёт аппаратную изоляцию уровня VM при гранулярности контейнера. Построен на Virtualization.framework и Swift-пакете apple/containerization, без стороннего гипервизора. Образы - OCI-совместимые, тянутся и пушатся в любой обычный реестр (Docker Hub и т.д.). Требования жёсткие: только Apple Silicon и только macOS 26 Tahoe (он опирается на новые фичи виртуализации и сети именно этого релиза). CLI намеренно похож на docker:

Код: Выделить всё

container system start
container images pull docker.io/library/nginx:latest
container run --rm --name web -p 8080:80 nginx:latest
container ls
Обрати внимание на container system start - это запуск фонового сервиса (демона), без него run/build/pull не работают, как dockerd у Docker. Под капотом каждый container run - это новая микро-VM с собственным ядром. Платой за изоляцию идёт чуть больший оверхед на старт по сравнению с шарингом одного ядра, зато безопасность и чистота окружения выше.

Практика: смотрим, где живёт твой docker mac

Сначала пойми, какой backend сейчас активен. docker context показывает, к какому демону подключён CLI:

Код: Выделить всё

docker context ls
NAME            DESCRIPTION                               DOCKER ENDPOINT
default         Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
colima *        colima                                    unix:///Users/you/.colima/default/docker.sock
desktop-linux   Docker Desktop                            unix:///Users/you/.docker/run/docker.sock
Звёздочка - активный контекст. Видно, что физически это разные unix-сокеты: colima свой, Docker Desktop свой. Переключение - docker context use desktop-linux. Это объясняет классическую путаницу "поставил colima и Docker Desktop, а docker ps показывает не то" - просто активен не тот контекст.

Теперь докажем себе, что под капотом Linux, а не macOS. Запросим ядро изнутри контейнера:

Код: Выделить всё

docker run --rm alpine uname -sr
Linux 6.10.14-orbstack-...
uname -sr из macOS-терминала выдал бы Darwin 25.x, а из контейнера - Linux с версией ядра той самой VM. Это и есть граница: слева Darwin, справа Linux в виртуалке.

Замерим боль bind mount наглядно. Создадим много мелких файлов на шаре и без неё:

Код: Выделить всё

mkdir -p ~/bmtest && cd ~/bmtest
# на проброшенной с macOS папке
docker run --rm -v "$PWD":/m alpine sh -c 'cd /m; time (for i in $(seq 1 2000); do echo x > f$i; done)'
# внутри тома самой VM (named volume)
docker run --rm -v vol:/m alpine sh -c 'cd /m; time (for i in $(seq 1 2000); do echo x > f$i; done)'
На bind mount время будет заметно больше, чем на named volume, потому что каждая операция идёт через границу хост<->гость. Отсюда практическое правило ниже.

Типичные грабли и как обойти
  • Тормоза на bind mount. Не маунти тяжёлые каталоги зависимостей с macOS внутрь. node_modules, vendor, .git держи в named volume или собирай внутри образа. Часто помогает делегированная синхронизация и исключение этих папок из шары. OrbStack и Apple container на файловых операциях ощутимо быстрее старого Docker Desktop - если упёрся в I/O, это весомый аргумент за переезд.
  • Не та архитектура образа. exec format error или "no matching manifest for linux/arm64" значит, образ собран только под amd64. Лечится docker run --platform=linux/amd64 ... или мульти-арч сборкой через docker buildx. Помни: эмуляция медленнее нативного arm.
  • "docker: command not found" после colima start. colima ставит VM, но клиент docker - отдельный пакет. Нужен brew install docker (а для compose - docker-compose или плагин). colima лишь поднимает демон и контекст.
  • Конфликт контекстов. Параллельно установленные Docker Desktop и colima/OrbStack дерутся за активный контекст и переменную DOCKER_HOST. Держи один активный, проверяй docker context ls перед дебагом "почему не вижу контейнер".
  • Apple container не стартует. Проверь, что это Apple Silicon и именно macOS 26 Tahoe - на Intel и на старых macOS он не работает в принципе. И не забудь container system start: без сервиса команды run/build молчат.
  • Лицензия Docker Desktop в компании. Если в организации более 250 человек или более 10 млн долларов выручки - бесплатное использование Docker Desktop вне закона. Это юридический, а не технический риск. Здесь и выстреливают бесплатные colima/Rancher/Podman либо платный, но лёгкий OrbStack.
Мини-лаба: пройди руками
  • Поставь colima и docker: brew install colima docker. Запусти colima start --vm-type vz и убедись docker ps работает.
  • Выполни docker run --rm alpine uname -sr и сравни с uname -sr в своём терминале. Зафиксируй: Darwin против Linux - вот она VM.
  • Прогони замер bind mount против named volume из практики выше. Своими глазами увидь разницу во времени.
  • Запусти docker run --platform=linux/amd64 alpine uname -m и docker run --platform=linux/arm64 alpine uname -m. Сравни x86_64 и aarch64 - это эмуляция против натива.
  • Если у тебя Apple Silicon на macOS 26: установи Apple container (brew install --cask container или релиз с github.com/apple/container), сделай container system start, затем container run --rm nginx:latest и container ls. Прочувствуй модель "VM на контейнер".
Контрольные вопросы
  • Почему для Linux-контейнера на Mac в любом случае нужна виртуальная машина, а на Linux-сервере - нет?
  • Чем архитектурно Apple container отличается от Docker Desktop и colima в части изоляции (сколько VM и на что)?
  • Откуда берётся просадка скорости на bind mount и какими двумя приёмами её лечат?
  • При каких условиях по сотрудникам и выручке Docker Desktop в компании становится платным, и какие бесплатные альтернативы это снимают?
Итог

Запомни главное: на Mac контейнер всегда едет внутри Linux-VM, и весь выбор инструмента - это выбор тонкости этой прослойки и способа проброса файлов/сети. Docker Desktop - удобный дефолт с лицензионной оговоркой для крупных. OrbStack - быстрый лёгкий заменитель на Apple Silicon. colima - бесплатный CLI для консольщиков. Apple container - официальный путь Apple с моделью "одна микро-VM на контейнер" под macOS 26. Понимая механику VM, эмуляции архитектур и bind mount, ты будешь чинить причину, а не симптом. В следующих главах курса про Docker мы используем этот фундамент при сборке образов и compose-стеков.

Источники: github.com/apple/container, github.com/apple/containerization, docs.docker.com/subscription/desktop-license, colima.run/docs, brew.sh
👍2 ❤️2 🔥 😄 🤔
Аватара пользователя
mick29
Сообщения: 1
Зарегистрирован: 06 июн 2026, 09:21

Re: Контейнеры на Mac: Docker Desktop, OrbStack, Apple container

Сообщение mick29 »

Спасибо, наконец дошло почему docker на маке жрёт память - это же целая виртуалка под капотом, а не пара процессов. Сижу на OrbStack после этого, RAM реально освободилась.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
terraformandy
Сообщения: 1
Зарегистрирован: 01 июн 2026, 09:34

Re: Контейнеры на Mac: Docker Desktop, OrbStack, Apple container

Сообщение terraformandy »

А Apple container реально каждый контейнер в свою VM пихает? Не дороговато по старту выходит если их штук 20 поднять для compose-стека? Кто-нибудь мерил против colima?
👍 ❤️1 🔥 😄 🤔2
Ответить
← Предыдущая глава
Среда разработчика на Mac: Xcode CLT, git, версии
Следующая глава →
Виртуализация: Virtualization.framework, UTM, Linux и Windows

Все главы курса «macOS для профи: администрирование, терминал и Homebrew»

Поделиться темой: ✈ Telegram VK
Похожие запросы: Контейнеры и виртуализация на MacСреда разработчика на MacApple Silicon: ARM, Rosetta 2

Вернуться в «macOS для профи: администрирование, терминал и Homebrew»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость