How is Docker related to exokernal approach like Mirage OS?
Asked Answered
W

2

9

How is Docker related to exokernal approaches like MirageOS?

For some information about MirageOS see:

Watersoak answered 20/6, 2014 at 14:34 Comment(2)
This is the first time I hear MirageOS beeing a "exokernel"-OS. The documents I read so far a talking about an "library"-OS. I guess those two complement each other in the case of Mirage, don't they?Fearful
Containers vs Hypervisors: The Battle Has Just Begun ==> linux.com/news/enterprise/cloud-computing/…Fearful
T
6

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.

Thanasi answered 8/7, 2014 at 14:45 Comment(1)
Wouldn't it be possible to implement a Docker Engine as a hypervisor? And more important: When I build a Mirage application / guest-OS, does the guest-App really have access to the hardware or just to a restricted and / or abstract Xen-Guest-API? If it really had access to the hardware what protect the other guest-apps and even the hypervisor from beeing manipulated or simply beeing killed by a guest-app?Fearful
T
4

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.

Tengler answered 20/6, 2014 at 16:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.