Container machines: Apple строит мост между macOS и Linux
На конференции WWDC Apple представила container machines - постоянные виртуальные Linux-машины для macOS, которые должны решить одну из самых раздражающих проблем разработчиков: когда код пишешь на Mac, а в продакшен он уходит на Linux-сервер.
Зачем это вообще нужно
Ситуация, знакомая любому бэкенд-разработчику: рабочий ноутбук на macOS, а сервер, куда отправляется готовое приложение, работает на Linux. Обе системы Unix-подобные, но этого родства недостаточно - различия в поведении библиотек, путях, системных вызовах и настройках среды стабильно подкидывают сюрпризы. Docker и Podman частично закрывают проблему, но требуют отдельной настройки и нередко добавляют собственные слои сложности. Чехия - Мексика эфир
Apple зашла с другой стороны. Container machines работают поверх проекта Container, который компания впервые показала на прошлогоднем WWDC. Сейчас вышла версия 1.0. Инструмент запускает стандартные OCI-контейнеры и новые «контейнерные машины» внутри лёгких виртуальных машин - с жёсткой изоляцией от основной macOS. Пара команд в терминале - и у тебя полноценная Linux-среда внутри Mac.
Как это работает на практике
Команда container machine run открывает терминал прямо внутри Linux. Можно выполнить одиночную команду - скажем, uname -a - и она отработает в Linux-среде, пока оболочка macOS остаётся нетронутой. По умолчанию домашняя папка пользователя подключается с правами чтения и записи: файлы и код доступны с обеих сторон без лишних телодвижений.
Известно, что в первых тестах удалось поднять машину на Ubuntu 24.04 со Swift, подключиться к ней из Visual Studio Code на macOS, собрать проект в Linux и запустить результат на стороне Mac. Отладка на .NET сработала корректно. Со Swift вышло хуже - точки останова не сработали. Проект открытый: код написан на Swift, лежит на GitHub под лицензией Apache 2.0.
Ограничения, о которых стоит знать
Инструмент пока не встроен в macOS напрямую - он живёт на GitHub и поддерживает только macOS 26. Это скорее developer preview, чем полноценная системная функция. Ряд ограничений существенный:
- Создание машины работает только с образами, где есть /sbin/init - многие контейнерные образы этого компонента не имеют, придётся собирать свой через Dockerfile
- Занятая память не возвращается macOS, пока машина активна - освободить её можно только перезапуском
- По умолчанию машина резервирует половину RAM, хотя реально тратит куда меньше
- Доступ к домашней папке по умолчанию открыт - потенциальный риск для ключей и конфигов в .ssh
- Графические Linux-приложения не поддерживаются нативно: только через XQuartz по сети
Есть ли шанс потеснить конкурентов
На Mac-рынке уже давно работают Docker, OrbStack, Colima, UTM и Podman. OrbStack, например, снискал репутацию самого быстрого и лёгкого решения среди разработчиков именно за счёт низкого потребления ресурсов. Apple предстоит доказать, что её собственные инструменты дают что-то, чего у конкурентов нет.
Первое впечатление - неплохое. Машины стартуют быстро, потребление памяти в покое минимальное, интеграция с файловой системой удобная. Но пока это история про потенциал, а не про зрелый продукт. Если Apple доработает поддержку отладчиков, улучшит управление памятью и расширит документацию - инструмент вполне способен стать стандартом для тех, кто пишет серверный код на Mac.