Виртуализация на уровне ОС (контейнеры) для OS X

Интересно, почему, помимо хорошего старого chroot, нет реализации виртуализации на уровне операционной системы (или контейнеры, если хотите) существует для Mac OS X.

Может ли это быть из-за ограничений ядра или ограничений лицензии? Или просто никто еще не запустил аналогичный проект?

16 голосов | спросил Emyl 27 J0000006Europe/Moscow 2014, 19:46:54

3 ответа


5

Ключевым элементом, необходимым для контейнеризации, является изоляция сетевых и других служб, но не только изоляции , но также виртуализация . FreeBSD Jails, «контейнеры» Linux (или, вернее, «пространства имен») и зоны Solaris /illumos предлагают некоторую степень «виртуализации» этих системных служб операционной системы.

По виртуализации это означает, что эти серверы доступны (или потенциально доступные ) для вещей внутри «контейнера», но таким образом, чтобы защитить другие вещи от тот же хост вне контейнера. (Например, контейнер может иметь свой собственный стек TCP /IP с собственным IP-адресом, кешем ARP и т. Д.)

ОС (операционная система) - это то, как мы обычно ссылаемся на этот тип «легкой» виртуализации, где процессы считают, что они видят виртуальное ядро, но все они используют одно и то же реальное ядро ​​под капотом; это ядро ​​выступает в качестве своего рода гипервизора в обеспечении того, чтобы границы контейнера /виртуализации не пересекались. (Другими словами, службы ОС виртуализированы.) Сравните это с аппаратной виртуализацией, где то, что виртуализировано, - это аппаратное обеспечение. устройства эмулируются в программном обеспечении и представлены в операционной системе, работающей в контейнере. Это очень мощный, но достаточно ресурсоемкий - каждая виртуальная машина должна иметь свою собственную копию операционной системы.

Недавний macOS имеет встроенную поддержку гипервизора через Hypervisor.framework, которая позволяет использовать программное обеспечение, такое как «XHyve» [порт FreeBSD's BHyve] (докер на MacOS использует это), но не хватает необходимых сервисов под капотом, чтобы полностью виртуализировать службы операционной системы.

По правде говоря, многое из того, что необходимо, возможно, уже присутствует, поскольку работа по созданию песочниц означает, что есть уже логические точки, где системные вызовы перехватываются и обрабатываются по-разному для разных приложений. Однако это далеко не полная история - реализация настоящей отдельной сети, IPC и других пространств имен - довольно много работы.

Лучшей причиной того, почему Apple не сделала этого, по всей видимости, является та же причина, по которой Apple не выпустила платформу, подходящую для работы macOS в центре обработки данных на протяжении многих лет - отсутствие рыночного спроса или отсутствие рыночного спроса Руководство Apple. На настольном и мобильном фокусе, где они сосредоточили свое внимание, просто не нужны виртуальные экземпляры macOS. (Это печально, потому что я хотел бы иметь поддержку виртуального macOS - например, запуск macOS на виртуальных машинах в Travis CI действительно занимает много времени по сравнению с контейнерами Linux).

ответил Garrett D'Amore 9 AM00000060000004631 2017, 06:01:46
4

Вы были бы удивлены: поддерживаются контейнеры на самом деле - для них используется ОС Windows (и iOS). Они были введены в 10.7 и теперь де-факто стандартизированы в 10.10 и iOS 8. В последнем они более строго соблюдаются (в первую очередь из-за причины безопасности приложений), до того момента, когда приложение может видеть только себя, а предыдущее методы перечисления процессов или ресурсов теперь возвращают результаты, основанные на контейнерах, аналогичные Linux ipc namespace, но более мощные.

ответил Technologeeks 6 42014vEurope/Moscow11bEurope/MoscowThu, 06 Nov 2014 17:13:47 +0300 2014, 17:13:47
3

Я бы представлял себе ответ, что никто этого не хочет. Кажется, это выполнимо. Эти вещи выполняются в основном с одной целью, сохраняя производительность для поставщиков VPS. И действительно, никто не хочет, чтобы экземпляр VPS был OS X-based.

ответил Shane Hsu 29 J0000006Europe/Moscow 2014, 18:06:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132