Купертино представила container machines - легковесные виртуальные Linux-машины для разработчиков на Mac
Apple показала на WWDC инструмент, который давно напрашивался: container machines - постоянные виртуальные машины с Linux, работающие прямо внутри macOS. Это ответ на классическую боль разработчика: пишешь на Mac, а деплоишь в Linux. Разрыв между средами порождает несовместимости, неожиданные баги и лишние часы отладки.
Что такое container machines и откуда они взялись
Новинка выросла из проекта Container, который Apple впервые продемонстрировала год назад. Теперь вышла версия 1.0, и вместе с ней появился ключевой механизм - запуск полноценных Linux-окружений внутри лёгких виртуальных машин. Изоляция от основной системы при этом жёстче, чем в обычных Docker-контейнерах. Тунис - Нидерланды прямая трансляция
Проект написан на Swift, код открыт на GitHub под лицензией Apache 2.0. В основе - пакет containerization, тоже от Apple. Поддерживается стандарт Open Container Initiative, то есть обычные контейнерные образы тоже работают. Пока инструмент живёт на GitHub, а не встроен в систему: это скорее утилита для разработчика, чем системная функция. Требует macOS 26.
Как это работает на практике
Команда container machine run открывает терминал внутри стандартной Linux-среды. Можно выполнить и разовую команду - она отработает в Linux, а пользователь останется в оболочке macOS. Домашняя папка Mac подключается по умолчанию с правами чтения и записи: файлы и проекты доступны сразу с обеих сторон без лишних настроек.
На практике удалось поднять Ubuntu 24.04 со Swift, подключиться к машине из VS Code и собрать проект в Linux. С .NET отладка сработала полностью. Со Swift возникли шероховатости - точки останова не срабатывали. Мелочь, но показательная: инструмент сырой, хотя и перспективный.
Ограничения, которые стоит знать
Без минусов не обошлось. Несколько ключевых моментов, которые важно учитывать:
- Создание машины через container machine create требует образа с /sbin/init - многие контейнерные образы его не содержат, придётся собирать свой через Dockerfile.
- Память по умолчанию - половина RAM компьютера. Занятый объём не возвращается macOS, пока машина работает. Освободить можно только перезапуском.
- Домашняя папка Mac открыта для Linux-среды: вредоносный пакет теоретически доберётся до ключей в .ssh. Отключается через параметр --home-mount.
- Графические Linux-приложения не поддерживаются - в отличие от WSL в Windows. Есть обходной путь через XQuartz, но это не полноценная встроенная поддержка.
Конкуренты и шансы на успех
На Mac уже работают Docker, Podman, Colima, OrbStack, UTM и ещё добрый десяток инструментов для Linux-контейнеров и виртуальных машин. Apple предстоит объяснить разработчикам, зачем переходить на её решение. Первые впечатления неплохие: система запускается быстро, потребляет ресурсы экономно. Но документация, поведение с памятью и полноценная поддержка отладчиков - всё это ещё требует доработки. Рынок инструментов разработки не прощает сырых релизов.