Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How is Docker related to exokernal approach like Mirage OS?

How is Docker related to exokernal approaches like MirageOS?

For some information about MirageOS see:

  • http://www.xenproject.org/developers/teams/mirage-os.html
  • http://www.se-radio.net/2014/05/episode-204-anil-madhavapeddy-on-the-mirage-cloud-operating-system-and-the-ocaml-language/
  • http://openmirage.org (official site)
like image 811
user570599 Avatar asked Jun 20 '14 14:06

user570599


2 Answers

It is very different.

Mirage effectively takes an application on a virtual machine and strips it down to leave just those parts of the system that are needed for the app. The result is a very small VM which needs only a hypervisor to run. Each one is a machine in its own right, as isolated from all the others as a VM ever is.

Docker saves resources by sharing as much as possible using union filesystems. There is still at least one full-sized operating system in the picture, but it is shared amongst all the containers that use that base image. All the containers run inside a single host operating system, and are isolated from each other using Linux mechanisms like containers and namespaces instead of being in separate VMs.

There's a good illustration of the difference between Docker and a VM in this Linux News article. The approach taken by Mirage is to make the VMs (in the left-hand picture) very small.

In short: Mirage shrinks; Docker shares.

like image 128
Peter Westlake Avatar answered Sep 30 '22 04:09

Peter Westlake


Disclaimer: I did not know the concept of exokernels and just read about them on Wikipedia. But I know Docker and this is how I would put it together.

Exokernels provide as less abstraction as possible. They make it possible for applications to communicate directly with the hardware of a machine. See http://en.wikipedia.org/wiki/Exokernel.

Docker on the other site is the quite opposite. It is another abstraction build on top of an existing operating system. So Docker does not only abstract the hardware (by using Linux), it also abstracts the operating system, by providing the same environment on different machines (e.g. you can have an Ubuntu container running on an CentOS machine).

So I would say Docker is very opposite to exokernels. It aims to abstract much more, while exokernels seems to go the other way and try to abstract as less as possible.

I do not see any further relations between both.

like image 32
Thomas Uhrig Avatar answered Sep 30 '22 05:09

Thomas Uhrig