[1] Mirage - http://openmirage.org (paper at http://anil.recoil.org/papers/2013-asplos-mirage.pdf)
[2] Zerg - http://zerg.erlangonxen.org
[1] Mirage - http://openmirage.org (paper at http://anil.recoil.org/papers/2013-asplos-mirage.pdf)
[2] Zerg - http://zerg.erlangonxen.org
Your example two, the zerg system, seems very similar to LXC. Other than the exoticism of Erlang, their only big feature vs. normal paravirtualization seems to be startup time, which they see as a groundbreaking change. Well, I regularly start whole systems in LXC in fractions of a second. See https://github.com/globalcitizen/lxc-gentoo
In summary, these two projects are not really any different to the topic under discussion, ie. LXC (~cgroups/namespaces). Well, except that unlike cgroups/namespaces they're not necessarily able to run everywhere Linux runs!
That's very different from an exo-kernel running on bare hardware. With Mirage, what the apps run on seems to be "para-virtualized bare metal", so rather than using the POSIX syscall interface as its ABI, it's using the paravirtualized "hardware" as its ABI.
That makes Mirage very similar to Zerg - it's the same concept, only OCaml vs. Erlang.
As for LXC, I agree LXC offers a lot of this, especially since you don't need to boot full Linux environments - you can spawn individual applications and fine-tune what isolation you need. Or you can even build applications that explicitly use cgroups themselves to isolate sub-processes. So their "spawn one Xen Dom-U per request" demo could similarly have been a "spawn one new process isolated in its own cgroups".
But these systems are appealing to me in that they bring VM level isolation with startup performance and resource utilization more in line with container systems.
That's particularly appealing if we start seeing cloud systems that can handle it. Imagine being able to create new EC2 instances at sub-second times...
Containers may be useful for single-tenant partitioning, but no one has managed to produce an OS kernel without an order of magnitude more local root security vulnerabilities than the HVM or PV virutualization systems.
Most of the challenge is automating that process adequately, which is really nothing more than traditional code profiling meets existing policy-based kernel-level security toolkits meets containers meets development processes (ie. build/test/release).
After ~3 years' with LXC, I believe that most of the attack surfaces are reasonably well understood and/or not required for most code to function. Sure, there will be kernel-level vulnerabilities, but they won't be exposed to such a broad range of userland applications. With security you also get so much more insight, power and predictability with regards to resource profiling than with paravirtualized solutions. Real kernel-level metrics versus load! Think of the impact for operations/capacity planning.
So... short soundbite to summarize? Docker is a toy compared to where we are going.
I agree with everything you said about lxc, but I'm not sure how you reached the conclusion that docker is a toy. Since Docker is a portability layer on top of lxc, it automatically benefits from all the awesome work happening in the kernel.
Or do you just use "toy" as a synonymous for "userland"?
I am talking conceptually about the whole direction the lightweight virt/app-level portability (relative infrastructure independence) thing is going.
My point is that the impact that continuing developments in this general area are going to have on security, development and operations processes is probably extreme... and I believe seriously under-considered by the community at present.
In terms of potential collaboration, what I would really like from docker is a single page, frequently revised summary page of features and efforts within the docker world. That would help me to get in touch with people to share info if we are facing similar challenges.
Right now it seems I would have to spend a lot of time monitoring things; time which doesn't exist. (He says, off to a sitar lesson...)
1) An ad-hoc compilation of cool stuff maintained by Ken Cochrane: https://github.com/dotcloud/docker/issues/614
2) All sorts of interesting software projects distributed as docker containers: http://index.docker.io
3) A highly active IRC channel, #docker@freenode where many cool applications of docker are being discussed