Ключовим елементом, необхідним для контейнеризації, є ізоляція мереж та інших послуг, але не лише ізоляція, а й віртуалізація . FreeBSD Jails, "контейнери" Linux (або, вірніше, "простори імен"), і зони Solaris / lightos, все це пропонує певну ступінь "віртуалізації" цих служб операційної системи.
За допомогою віртуалізації це означає, що ці сервери доступні (або потенційно доступні ) для речей всередині "контейнера", але таким чином, що захищає інші речі на тому ж хості поза контейнером. (Наприклад, контейнер може мати власний стек TCP / IP із власною IP-адресою, кешем ARP тощо)
Віртуалізація ОС (операційної системи) - це, як правило, ми посилаємось на цей тип "легкої" віртуалізації, де процеси думають, що вони бачать віртуальне ядро, але всі вони мають однакове реальне ядро під кришкою; що ядро діє як своєрідний гіпервізор, забезпечуючи, щоб межі контейнера / віртуалізації не були перекреслені. (По-іншому, служби ОС віртуалізовані.) Порівняйте це з віртуалізацією обладнання, де віртуалізується апаратне забезпечення - наприклад, пристрої емулюються програмним забезпеченням та подаються в операційну систему, що працює в контейнері. Це дуже потужно, але досить ресурсомістко - кожна віртуальна машина повинна мати свою копію операційної системи.
Останні macOS мають вбудовану підтримку гіпервізора через Hypervisor.framework, який дозволяє програмне забезпечення типу "XHyve" [Порт FreeBSD's BHyve] (докер на macOS використовує це), але не має необхідних сервісів під капотом, щоб повністю віртуалізувати послуги операційної системи.
По правді кажучи, багато того, що потрібно, мабуть, вже є, оскільки робота зі створення пісочниць означає, що вже є логічні пункти, де системні виклики перехоплюються та обробляються по-різному для різних програм. Однак це далеко не повна історія - реалізація справжньої окремої мережі, IPC та інших просторів імен - це дуже багато роботи.
Найкраща причина, чому Apple цього не зробила, ймовірно, та сама причина, що Apple протягом багатьох років не випустила платформу, придатну для роботи macOS в центрі обробки даних - відсутність попиту на ринку або сприйняття відсутності попиту на ринку з боку керівництва Apple. Настільний і мобільний фокус, де вони зосередили свою увагу, просто не потребують таких віртуальних примірників macOS. (Це сумно, тому що я хотів би мати підтримку віртуальних macOS - наприклад, запуск macOS на VM в Travis CI дійсно забирає багато часу в порівнянні з контейнерами Linux).