Hacker News new | ask | show | jobs
by O____________O 4088 days ago
Leveraging our deep virtualization experience, Microsoft will now offer containers with a new level of isolation previously reserved only for fully dedicated physical or virtual machines

Uh. I don't understand how that sentence has any meaning. Particularly the "a new level of isolation previously reserved only for fully dedicated physical or virtual machines" bit. I mean, isn't that what a container is, a virtual machine? And if so, why is 'container' even involved here?

I don't know much about the container scene. I thought they were literally just virtual machines, with presumably some standardized way of spinning them up programmatically. Maybe someone can correct me.

4 comments

A container isn't just a virtual machine: a VM involves providing an abstracted machine environment in which you run a whole OS, including a fresh kernel. A Container involves starting an extra, isolated user-space with no extra kernel of machine layer.
> I don't know much about the container scene. I thought they were literally just virtual machines, with presumably some standardized way of spinning them up programmatically. Maybe someone can correct me.

Close but containers share the same kernel. It allows them to do many things more efficiently but it's not a straight up virtual machine.

To build on this, containerized apps have less overhead than a full on virtual machine, since the binaries aren't replicated every time. Like, de-dupe for your VMs, to use a weak analogy.

However, because they all share the same kernel, you're limited to a single flavor of containers per host. So a host can provide for all windows apps, or all linux apps, but not a mix.

It makes the most sense when you have a need for many separate instances of similar applications. You can fit many more containers in a given host than their full VM equivalent, but lose the complete abstraction (and therefor, flexibility), that a VM gives you.

> So a host can provide for all windows apps, or all linux apps, but not a mix.

While this is true I feel like at some point in the future we're going to be able to mix both. I've seen some rough ideas as to how it could happen but they sounded almost impossible to pull off. Still, if we had a way to mix containers it would be absolutely amazing.

It would be cool, but I can see a point of diminishing returns. If you kept it to say, two OS flavors or so, yeah, not bad. But the moment you go down that path, the abstraction needed to ensure both sets of binaries play correctly with the underlying hardware and still remain isolated and separate starts to eat into the overhead you were trying to save in the first place. It'd be cool to pull off, but I have to imagine that it'd be for niche applications.
I recently gave a talk about the relationships between VMs and containers: http://original.livestream.com/pivotallabs/video?clipId=pla_...
First half of this video will get you fully up to speed https://www.joyent.com/developers/videos/docker-and-the-futu...