2014-06-20 11 views
8

In che modo Docker è correlato a approcci esokernal come MirageOS?In che modo Docker è correlato all'approccio esokernal come Mirage OS?

Per alcune informazioni su MirageOS vedere:

+0

Questa è la prima volta che sento MirageOS essere un "exokernel" -OS. I documenti che ho letto finora parlano di una "biblioteca" -OS. Immagino che quei due si completino a vicenda nel caso di Mirage, vero? – user573215

+0

Containers vs Hypervisor: The Battle Has Begun ==> https://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun/ – user573215

risposta

3

Diniego: non sapevo il concetto di exokernels e proprio leggere su di loro su Wikipedia. Ma conosco Docker ed è così che vorrei metterlo insieme.

Exokernels fornire meno astrazione possibile. Consentono alle applicazioni di comunicare direttamente con l'hardware di una macchina. Vedi http://en.wikipedia.org/wiki/Exokernel.

Docker sull'altro sito è l'opposto. È un'altra build di astrazione su un sistema operativo esistente. Quindi Docker non si limita ad astrarre l'hardware (usando Linux), ma astrae anche il sistema operativo, fornendo lo stesso ambiente su macchine diverse (ad esempio si può avere un contenitore Ubuntu in esecuzione su una macchina CentOS).

Quindi direi che Docker è molto opposto a exokernels. Mira ad astrarre molto di più, mentre exokernels sembra andare dall'altra parte e cercare di astrarre il meno possibile.

Non vedo ulteriori relazioni tra entrambi.

6

È molto diverso.

Mirage utilizza efficacemente un'applicazione su una macchina virtuale e la abbassa per lasciare solo quelle parti del sistema necessarie per l'app. Il risultato è una VM molto piccola che necessita solo di un hypervisor per funzionare. Ognuno è una macchina a sé stante, isolata da tutti gli altri come mai una VM.

Docker salva le risorse condividendo il più possibile utilizzando i file system union. C'è ancora almeno un sistema operativo a grandezza naturale nell'immagine, ma è condiviso tra tutti i contenitori che usano quell'immagine di base. Tutti i contenitori vengono eseguiti all'interno di un singolo sistema operativo host e sono isolati l'uno dall'altro utilizzando meccanismi di Linux come contenitori e spazi dei nomi anziché essere in VM separate.

C'è una buona illustrazione della differenza tra Docker e una VM in questo Linux News article. L'approccio adottato da Mirage è quello di rendere le VM (nell'immagine a sinistra) molto piccole.

In breve: Mirage si restringe; Le condivisioni Docker.

+1

Non sarebbe possibile implementare un Docker Engine come hypervisor? E ancora più importante: quando costruisco un'applicazione Mirage/sistema operativo guest, l'app guest ha davvero accesso all'hardware o solo a un'API Xen-Guest limitata e/o astratta?Se avesse davvero accesso all'hardware che cosa protegge le altre app-guest e persino l'hypervisor potrebbe essere manipolato o semplicemente essere ucciso da un'app-guest? – user573215