
Если вы пользователь Apple, вы, возможно, слышали о новой функции Apple, Containerization, представленной на WWDC 2025.
Краткое описание:
-
Container— это инструмент командной строки, работающий с контейнеризацией . Именно с ним взаимодействуют конечные пользователи. -
Containerizationуправляет созданием контейнеров, которые взаимодействуют сVirtualization.framework. -
Virtualization.framework— это API гипервизора (высокого уровня), который создает новую виртуальную машину для каждого контейнера черезHypervisor.framework. -
Hypervisor.framework— это низкоуровневый API гипервизора, который использует ядро macOS.
Она похожа на подсистему Windows для Linux 2 (WSL) от Microsoft, где в фоновом режиме запускается очень маленькая легковесная виртуальная машина, что позволяет использовать ядро Linux на хосте, отличном от Linux (WSL2 использует Hyper-V). Не путать с WSL1, которая больше напоминала WINE!
Его публичный выпуск запланирован на следующую крупную версию ОС — macOS Tahoe 26, а также на macOS Sequoia 15.
Containerizationподдерживает контейнеры, соответствующие стандарту «Open Container Initiative (OCI)», к счастью, наш образ Kali соответствует требованиям!
Установка
Если первое, что мы видим при попытке запуска containerэто:
~ % container zsh: command not found: container ~ %
…Нам нужно его установить.
Выполняем быструю проверку, чтобы убедиться, что наша система поддерживается:
~ % sw_vers -productVersion 15.5 ~ % ~ % uname -m arm64 ~ %
Мы используем macOS 15.5 на устройстве серии Apple Silicon (также известном как arm64).
Мы готовы к запуску!
Если установлен Homebrew:
~ % brew install --cask container ==> Downloading https://github.com/apple/container/releases/download/0.2.0/container-0.2.0-installer-signed.pkg ==> Downloading from https://release-assets.githubusercontent.com/github-production-release-asset/993475914/c5fb6a42-f282-4dd7-95c2-af9b142f0ed1?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-07-17T14%3A06%3A32Z&r ######################################################################################################################################################################################################### 100.0% ==> Installing Cask container ==> Running installer for container with sudo; the password may be necessary. Password: installer: Package name is container-0.2.0-installer-signed installer: Upgrading at base path / installer: The upgrade was successful. 🍺 container was successfully installed! ~ %
В противном случае мы можем вручную загрузить (подписанный) установочный файл с github.com/apple/container. На момент написания статьи он имел форматcontainer-0.2.0-installer-signed.pkg.
Теперь, когда мы попробуем запустить его:
~ % container OVERVIEW: A container platform for macOS USAGE: container [--debug] <subcommand> OPTIONS: --debug Enable debug output [environment: CONTAINER_DEBUG] --version Show the version. -h, --help Show help information. CONTAINER SUBCOMMANDS: create Create a new container delete, rm Delete one or more containers exec Run a new command in a running container inspect Display information about one or more containers kill Kill one or more running containers list, ls List containers logs Fetch container stdio or boot logs run Run a container start Start a container stop Stop one or more running containers IMAGE SUBCOMMANDS: build Build an image from a Dockerfile images, image, i Manage images registry, r Manage registry configurations OTHER SUBCOMMANDS: builder Manage an image builder instance system, s Manage system components ~ %
…но мы еще не достигли цели!
Когда мы пытаемся заставить containerвзаимодействовать с Containerization, мы можем получить:
~ % container ls Error: interrupted: "internalError: "failed to list containers" (cause: "interrupted: "XPC connection error: Connection invalid"") Ensure container system service has been started with `container system start`." ~ %
Мы можем решить эту проблему, запустив службу в фоновом режиме:
~ % container system start Verifying apiserver is running... Installing base container filesystem... No default kernel configured. Install the recommended default kernel from [https://github.com/kata-containers/kata-containers/releases/download/3.17.0/kata-static-3.17.0-arm64.tar.xz]? [Y/n]: y Installing kernel... ~ %
А вот теперь мы готовы к запуску!
Запуск контейнеров
Подобно Docker и Podman, мы можем запускать наши контейнеры:
~ % container run --rm -i -t kalilinux/kali-rolling ┌──(root㉿9ff4685f-76e1-42fa-86ba-f12e76c79843)-[/] └─# id uid=0(root) gid=0(root) groups=0(root)
При первом запуске containerпотребуется скачать образ контейнера. В настоящее время реестром контейнеров по умолчанию является DockerHub.
Мы можем выполнять те же функции, что и в Docker / Podman, например, предоставлять общий доступ к каталогу:
~ % container run --remove --interactive --tty --volume $(pwd):/mnt --workdir /mnt docker.io/kalilinux/kali-rolling:latest ┌──(root㉿4be77ff5-bd57-4076-8bf0-8e51caff047e)-[/mnt] └─# uname -a Linux 4be77ff5-bd57-4076-8bf0-8e51caff047e 6.12.28 #1 SMP Tue May 20 15:19:05 UTC 2025 aarch64 GNU/Linux
Alias
Как только все заработает так, как и ожидалось, мы можем создать быстрый alias, чтобы не вводить каждый раз полную команду заново:
~ % alias container-shell='container run --remove --interactive --tty --entrypoint=/bin/bash --volume $(pwd):/mnt --name "$(hostname -s)-$(mktemp -u XXXXXX)" --workdir /mnt' ~ % ~ % echo "alias container-shell='container run --remove --interactive --tty --entrypoint=/bin/bash --volume $(pwd):/mnt --name "$(hostname -s)-$(mktemp -u XXXXXX)" --workdir /mnt'" >> ~/.zshrc ~ % ~ % container-shell kalilinux/kali-rolling:latest ┌──(root㉿mba22-vB9af6)-[/mnt] └─#
Известные неисправности
В настоящее время существует ряд известных ограничений контейнеризации, особенно при использовании macOS «Sequoia» 15, таких как отсутствие IP-адреса при доступе контейнера к сети или отсутствие доступа к сети. Если вы столкнётесь с подобными проблемами, рекомендуем ознакомиться с рекомендациями Apple и следовать им.
Итог
И вот так у нас появился быстрый способ запустить контейнеры Kali на macOS. Это часть нашей постоянной стратегии «Kali Everywhere», в рамках которой мы размещаем необходимые вам инструменты в максимально возможном количестве мест, чтобы вам было удобно ими пользоваться. Существует множество способов запустить Kali. Обязательно посетите нашу страницу «Получить Kali», чтобы найти наиболее подходящий способ для вас.
От автора перевода
Да, приятно смотреть, как Linux проникает во все основные платформы: WSL2 для Windows, Linux Terminal для Android, а теперь ещё и для MacOS контейнеры готовят. По идее, используя данную инструкцию, можем запускать любые контейнеры, которые соответствуют требованиям.
Надеюсь, вам эта новость, как и мне, показалась очень интересной.
Больше новостей в моём Telegram. Подписывайтесь!
ссылка на оригинал статьи https://habr.com/ru/articles/932438/
Добавить комментарий