Just a little comment, it says Docker is an abstraction layer on top of LXC. Since version 0.9, Docker uses their own libcontainer go package to communicate with the kernel directly instead of using LXC. It is still possible to use LXC though, but it's not used by default.
http://blog.docker.io/2014/03/docker-0-9-introducing-executi...