Что такое Apple container?
container — это CLI‑утилита, написанная на Swift, позволяющая создавать OCI‑совместимые образы, запускать контейнеры и перемещать образы в реестры и из реестров. Инструмент работает только на Mac с Apple silicon (поддержка Intel‑моделей отсутствует) и требует macOS 26 (в macOS 15 возможна работа с ограничениями сети).
Как container запускает ваши контейнеры
В отличие от большинства macOS‑инструментов, которые используют один общий Linux‑VM для всех контейнеров, Apple запускает отдельный лёгкий VM для каждого контейнера. Это даёт три ключевых преимущества:
- Безопасность: каждый контейнер изолирован на уровне виртуальной машины, что уменьшает поверхность атаки.
- Конфиденциальность: в VM монтируются только нужные данные, а не весь пользовательский диск.
- Производительность: расход памяти значительно ниже, чем у полноценных VM, а время загрузки сопоставимо с традиционными контейнерами.
Для реализации используется macOS‑фреймворк Virtualization (VM), vmnet (сеть), XPC (межпроцессное взаимодействие), launchd (службы) и Keychain (учётные данные реестра).
Основные команды
Запуск контейнера с настройкой ресурсов:
container run —rm —cpus 8 —memory 32g myimage
Просмотр запущенных контейнеров:
container ls
Статистика использования ресурсов (аналог top):
container stats —no-stream mycontainer
Логи загрузки VM для отладки:
container logs —boot mycontainer
Создание отдельного сетевого пространства:
container network create foo —subnet 192.168.100.0/24
Примеры практического применения
Локальная разработка бэкенда. Запуск сервиса в отдельном VM с пробросом порта:
container run -d —rm -p 127.0.0.1:8080:8000 node:latest npx http-server -a :: -p 8000
Проверка:
curl http://127.0.0.1:8080
Повторяемые CI‑сборки. Сборка образа в изолированном builder‑VM:
container build —tag myapp:latest —file Dockerfile .
Кросс‑архитектурные образы. Создание образов для arm64 и amd64 в одном процессе:
container build —arch arm64 —arch amd64 —tag registry.example.com/myapp:latest .
Работа с локальными данными. Монтирование папки в контейнер:
container run —volume ${HOME}/data:/data python:alpine ls -l /data
Запуск недоверенного кода. Каждый контейнер стартует в собственном VM, что существенно снижает риск заражения хоста.
Apple container vs Docker Desktop
- Модель изоляции: отдельный лёгкий VM vs общий Linux‑VM.
- Потребление в простое: почти ноль vs постоянно работающий VM.
- Совместимость образов: OCI‑совместимые vs OCI‑совместимые.
- Лицензия: Apache 2.0 vs коммерческие условия для крупных компаний.
- Поддерживаемое железо: только Apple silicon vs Apple silicon + Intel.
- Compose/GUI: отсутствует встроенный Compose vs полный GUI‑интерфейс.
Сильные и слабые стороны
Плюсы: высокий уровень изоляции, минимальное потребление памяти в простое, полная совместимость OCI, открытая лицензия.
Минусы: отсутствие Docker Compose, ограниченная поддержка памяти (неполный ballooning), сетевые ограничения в macOS 15, отсутствие поддержки Intel‑Mac.
Ссылки
Официальный репозиторий проекта: github.com/apple/container
Документация Apple по Virtualization framework: developer.apple.com/documentation/virtualization






















