Поделиться:

Нативные контейнеры для macOS пока находятся на ранней стадии разработки, но уже сейчас с их помощью можно запускать macOS внутри macOS, собирать образы через Docker и распространять их. Звучит круто, правда?

Есть несколько важных нюансов, с которыми нужно смириться. Во-первых, сами разработчики называют проект «очень альфа-версией», так что используете на свой страх и риск. Во-вторых, придется отключить SIP на Mac. И в-третьих, нужно установить Homebrew на Sonoma, Ventura, Monterey или Catalina (да, это единственные поддерживаемые версии macOS в качестве хостовой ОС). Если вас это не пугает, загляните на страницу проекта в GitHub, установите Homebrew и вперед.

Домашняя страница проекта: https://macoscontainers.org, а репозиторий на GitHub вот тут.

Начнем с Терминала.

Предположим, Homebrew у вас уже стоит. Теперь нужно установить MacFuse:
brew install --cask macfuse

Затем устанавливаем сборку Docker для macOS Containers:
brew install docker docker-buildx macOScontainers/formula/dockerd

После завершения установки запускаем containerd:
sudo brew services start containerd

А потом и dockerd:
sudo brew services start dockerd

Дальше настраиваем BuildKit. Сначала создаем директорию для плагинов:
mkdir -p ~/.docker/cli-plugins

И связываем buildkit с docker:
ln -sfn /opt/homebrew/opt/docker-buildx/bin/docker-buildx ~/.docker/cli-plugins/docker-buildx

Теперь нужно пройти аутентификацию в GitHub Container Registry:
echo [YOUR_ACCESS_TOKEN] | docker login ghcr.io -u [GITHUB_USERNAME] --password-stdin

И наконец, запускаем свой первый нативный контейнер macOS:
docker run --rm -it ghcr.io/macoscontainers/macos-jail/ventura:latest echo "Hello from macOS container"

Эти инструкции взяты с этой страницы на GitHub - можете обратиться к ней за дополнительной информацией.

Кстати, если интересно посмотреть на проект глазами разработчиков, загляните в обсуждение на HackerNews - там идет очень живая дискуссия.

Как вы, наверное, знаете, Docker-контейнеры стали такими популярными и полезными именно потому, что предлагают легкий способ создавать согласованные пакеты. В них можно упаковать приложение со всеми зависимостями и быть уверенным, что оно запустится в любой среде. Разработчикам это здорово упрощает жизнь: ПО ведет себя одинаково, куда бы его ни развернули. Это ускоряет разработку, развертывание, масштабирование и управление.

В каком-то смысле образы и контейнеры Docker похожи на виртуальные машины, но заточены именно под задачи разработчиков. Если же вам больше интересно виртуализировать ОС просто для экспериментов или развлечения, а не для работы, посмотрите наши посты про виртуальные машины.