Virtualizzazione a livello di sistema operativo (contenitori) per OS X

20

Mi chiedo perché, a parte il buon vecchio chroot, nessuna implementazione della virtualizzazione a livello di sistema operativo (o contenitori, se lo preferisci) esiste per Mac OS X.

Potrebbe essere dovuto a limitazioni del kernel o restrizioni della licenza? O semplicemente nessuno ha ancora lanciato un progetto simile?

    
posta Emyl 27.06.2014 - 17:46
fonte

5 risposte

7

Un elemento chiave richiesto per la containerizzazione è l'isolamento di reti e altri servizi, ma non solo isolamento , ma anche virtualizzazione . FreeBSD Jails, "contenitori" Linux (o più correttamente "namespace") e zone Solaris / illumos offrono tutti un certo grado di "virtualizzazione" di questi servizi di sistema del sistema operativo.

Con la virtualizzazione, ciò significa che questi server sono disponibili (o potenzialmente disponibili ) per le cose all'interno del "contenitore", ma in un modo che protegge le altre cose su lo stesso host all'esterno del contenitore. (Ad esempio, un contenitore può avere il proprio stack TCP / IP, con il proprio indirizzo IP, cache ARP, ecc.)

La virtualizzazione del SO (sistema operativo) è il modo in cui generalmente ci riferiamo a questo tipo di virtualizzazione "leggera", in cui i processi pensano di vedere un kernel virtuale, ma condividono tutti lo stesso vero kernel; quel kernel agisce come una sorta di hypervisor per garantire che i limiti del contenitore / virtualizzazione non siano superati. (In altre parole, i servizi del sistema operativo sono virtualizzati.) Confrontalo con la virtualizzazione dell'hardware, dove ciò che è virtualizzato è l'hardware - ad es. i dispositivi vengono emulati nel software e presentati a un sistema operativo in esecuzione nel contenitore. Questo è molto potente, ma richiede un uso intensivo delle risorse: ogni macchina virtuale deve avere una propria copia del sistema operativo.

Il macOS recente supporta l'hypervisor nativo tramite Hypervisor.framework che consente di software come "XHyve" [una porta di BHyve di FreeBSD] (la finestra mobile su macOS usa questo), ma non dispone dei servizi necessari per virtualizzare completamente i servizi del sistema operativo.

In realtà, molte delle necessità sono probabilmente già presenti, dal momento che il lavoro per fornire sandbox vuol dire che esistono già punti logici in cui le chiamate di sistema vengono intercettate e gestite in modo diverso per diverse applicazioni. Tuttavia, questo è lontano dalla storia completa: l'implementazione di una vera rete separata, IPC e altri spazi dei nomi è un bel po 'di lavoro.

Il motivo migliore per cui Apple non ha fatto questo è probabilmente la stessa ragione per cui Apple non ha rilasciato una piattaforma adatta per l'esecuzione di macOS nel data center per molti anni: mancanza di domanda di mercato o mancanza di domanda del mercato da parte di Leadership di Apple. Il focus desktop e mobile su cui hanno focalizzato la loro attenzione semplicemente non ha più bisogno di istanze macOS virtuali. (Questo è triste, perché mi piacerebbe avere il supporto macOS virtuale - ad esempio, l'esecuzione di macOS su VM su Travis CI richiede molto tempo rispetto ai contenitori Linux).

    
risposta data 09.08.2017 - 05:01
fonte
4

Saresti sorpreso - i contenitori sono supportati - la sandbox OS X (e iOS) si è evoluta per usarli. Sono stati introdotti in 10.7 e ora sono di fatto standard in 10.10 e iOS 8. In quest'ultimo caso vengono applicati in modo più rigoroso (principalmente a causa della sicurezza dell'applicazione), al punto che un'app può vedere solo se stessa e la precedente i metodi di enumerazione di processi o risorse ora restituiscono risultati basati su container, simili al namespace IPc di Linux, ma più potenti.

    
risposta data 06.11.2014 - 15:13
fonte
3

Immagino che la risposta sia che nessuno lo vuole davvero. Sembra fattibile. Queste cose sono fatte principalmente per uno scopo, conservando le prestazioni per i vendor VPS. E in realtà nessuno vuole che un'istanza VPS sia basata su OS X.

    
risposta data 29.06.2014 - 16:06
fonte
2

Mentre utilizza il "buon vecchio chroot (8)", ho avviato un progetto che tende a imitare il comportamento della finestra mobile su OS X e NetBSD. È gratuito come in-speech ed è disponibile su GitHub . Come dice il README, questo progetto non riguarda né la sicurezza né la produzione, ma aiuterà a testare gli stack completi in modo nativo sulla tua workstation.

    
risposta data 17.01.2016 - 15:42
fonte
0
La finestra mobile

(a quanto ho capito) è solo "virtualizzante" (stratificazione) del file system e della rete (cpu / mem sono limitati), quindi tutte le stesse funzionalità dovrebbero essere lì ma non possono essere commercializzate allo stesso modo.

    
risposta data 06.09.2015 - 21:43
fonte

Leggi altre domande sui tag