Re: Dockerが利用しているAUFSとLXC
一つ疑問として、kernelをホストOSとゲストOSで共有するなら、それらのOSでkernelのversionが違った場合にどうなるのかというものがありました。
LXC の仮想化は、プロセスからファイルシステムまでホストの名前空間を切り分けることで実現しているので、ホストとゲストの kernel は同じことが前提のはずです。Oracle Linux Administrator’s Solutions Guide の 9.1 About Linux Containers にも
When you use the lxc-start command to start a system container, by default the copy of /sbin/init in the container is started to spawn other processes in the container’s process space. Any system calls or device access are handled by the kernel running on the host. If you need to run different kernel versions or different operating systems from the host, use a true virtualization solution such as Oracle VM or Oracle VM VirtualBox instead of Linux Containers.
とあります。Oracle VM というのは Xen らしい。
Docker の下にある namespaces, cgroups, AUFS については dotClound, Inc. (現 Docker, Inc.) の人々が書いていた PaaS Under the Hood シリーズ がわかりやすかったです。
(追記: Linux 3.12 をホストに Linux 3.10 をゲストにする、という話ではなくて、3.12 をつかっているディストリビューション X をホストにしたときに、カーネルは同じことが前提で、本来は 3.10 をつかうはずのディストリビューション Y がゲストとして動くかどうか、という疑問だったような気がしてきた…。ともあれ PaaS Under the Hood はおすすめです。)